Je travaille sur une application interne qui affiche l'emploi du temps quotidien pour une salle de conférence donnée sur une timeline. Chaque minute, je consulte un service Web et je reçois des informations pour tous les rendez-vous de la journée, et j'utilise ces données pour créer des vues personnalisées «bloc temporel» indiquant l'heure de la réunion, le client, etc. à partir de la chronologie et l'actualiser avec les nouvelles données. Les vues personnalisées que j'utilise ne consistent en rien d'autre qu'une LinearLayout avec 3 TextViews à l'intérieur. Je suppose que je devrais noter que la disposition pour l'activité est assez complexe, et certaines vues sont imbriquées sur 7 couches profondes.ClassCastException dans android.text.Styled.drawDirectionalRun
Tout fonctionne très bien pendant environ 2-3 jours, puis l'application va planter. Je l'ai fait pour que le service Web atteigne toutes les 3 secondes, et maintenant le crash se produira toutes les 2,5 heures. Ce qui m'arrive c'est que l'exception qui est lancée ne pointe même pas sur quoi que ce soit dans mon code. Exception est ci-dessous:
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)
Si je suis coulée de manière incorrecte une chaîne (que je suis sûr que je ne suis pas), comment est-ce que ce ne serait pas pris jusqu'à ce qu'il soit profond que dans le code natif? Je suis à perte ici. Est-il possible que ce soit un bug Android interne?
Une autre chose qui pourrait aider: une autre fois que cette application a planté, il a donné la même ClassCastException, mais dans un endroit différent. C'est arrivé dans la fonction BoringLayout.isBoring
, qui est aussi quelque chose qui n'est jamais touché dans mon code.
J'ai effectivement compris cela il ya quelque temps et j'ai oublié d'y répondre. Je vais le faire maintenant. – BigFwoosh