我正在研究一個內部應用程序,該應用程序在時間線上顯示給定會議室的每日安排。每一分鐘,我都會訪問一個Web服務並獲取有關當天所有約會的信息,然後使用這些數據創建自定義的「時間線塊」視圖,以顯示會議時間,客戶等。然後,刪除所有約會從時間線上更新並用新數據進行刷新。我使用的自定義視圖只包含一個帶有3個TextView的LinearLayout。我想我應該注意到,活動的佈局非常複雜,有些視圖嵌套了大約7層深。android.text.Styled.drawDirectionalRun中的ClassCastException
一切運行良好大約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)
如果我錯誤地鑄造一個String(我敢肯定我不是),是怎麼回事,它不會被抓住,直到它是深藏在本地代碼?我在這裏不知所措。這可能是一個內部的Android錯誤嗎?
另一件可能有用的事情:另一次當這個應用程序崩潰時,它給出了相同的ClassCastException,但在不同的地方。它發生在BoringLayout.isBoring
函數中,這也是我的代碼中永遠不會觸及的東西。
我其實早就想出了這個,忘了回答。我現在會這樣做。 – BigFwoosh 2012-01-30 19:44:42