android.text.Styled.drawDirectionalRun中的ClassCastException

|| 我正在使用一个内部应用程序,该应用程序在时间轴上显示给定会议室的每日日程表。每分钟,我都会访问Web服务并获取一天中所有约会的信息,然后使用该数据来创建自定义的“时间轴块”视图,以显示会议时间,客户等。然后,我从时间轴中删除所有约会,并用新数据刷新它。我正在使用的自定义视图仅包含一个LinearLayout,其中包含3个TextViews。我想我应该注意,该活动的布局非常复杂,并且一些视图嵌套约7层。 一切正常运行约2-3天,然后该应用将崩溃。我这样做是为了使它每3秒访问一次Web服务,现在崩溃大约每2.5小时发生一次。让我明白的是,抛出的异常甚至没有指向我的代码中的任何内容。异常如下:
FATAL EXCEPTION: main
java.lang.ClassCastException: java.lang.String
   at android.text.Styled.drawDirectionalRun(Styled.java:283)
   at android.text.Styled.measureText(Styled.java:430)
   at android.text.Layout.measureText(Layout.java:1655)
   at android.text.Layout.getLineMax(Layout.java:689)
   at android.text.Layout.getLineWidth(Layout.java:671)
   at android.widget.TextView.desired(TextView.java:5037)
   at android.widget.TextView.onMeasure(TextView.java:5083)
   at android.view.View.measure(View.java:8171)
   at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:578)
   at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:362)
   at android.view.View.measure(View.java:8171)
   at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:578)
   at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:362)
   at android.view.View.measure(View.java:8171)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
   at android.view.View.measure(View.java:8171)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
   at android.view.View.measure(View.java:8171)
   at android.view.ViewRoot.performTraversals(ViewRoot.java:801)
   at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
   at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Looper.loop(Looper.java:123)
   at android.app.ActivityThread.main(ActivityThread.java:4627)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:521)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
   at dalvik.system.NativeStart.main(Native Method)
如果我不正确地转换了一个字符串(我很确定我不是),那么直到它深深地嵌入本机代码的情况下,如何才能捕获它?我在这里不知所措。这可能是内部的Android错误吗? 可能有帮助的另一件事:该应用程序再次崩溃时,它给出了相同的ClassCastException,但位置不同。它发生在
BoringLayout.isBoring
函数中,这也是我的代码从未触及过的东西。     
已邀请:
您的R.layout.standings_layout必须在另一个中包含很多LinearLayouts     
因此,事实证明,一直以来的问题是,Android在(不正确地)处理TypeFace对象时会泄漏内存。我正在为每个文本标签创建一个新的TypeFace,并且随着时间线的更新,每分钟都会重新填充时间线块。 解决方案是创建可重复使用的TypeFaces,以便可以全局访问它们。我将它们放在Application类中,因为我所有的Activity都可以访问它。这样,Android只需处置几个对象即可,而不是数百个。当然,它不能解决内部问题,但是可以解决。从ICS开始,该问题可能已解决,但我不确定。     

要回复问题请先登录注册