1

Mon application toujours arrêt dans l'intervalle de temps aléatoire (la plupart du temps de quelques minutes à quelque chose comme 20 minutes). La boîte de message "L'application a cessé de fonctionner" s'affiche. Le plus gros problème est que je ne fais rien dans l'application (comme interagir avec elle), et c'est juste un arrêt aléatoire par lui-même. Voici logcat print:Fermeture de l'application soudaine sans faire d'activité, lance IllegalStateException surMeasure()

07-15 20:34:16.595 27361-27363/test.game D/dalvikvm: GC_CONCURRENT freed 141 
9K, 44% free 13902K/24391K, paused 4ms+9ms, total 66ms 
07-15 20:34:28.997 27361-27363/test.game D/dalvikvm: GC_CONCURRENT freed 1416K, 43% free 13903K/24391K, paused 3ms+7ms, total 56ms 
07-15 20:34:29.418 27361-27361/test.game D/AndroidRuntime: Shutting down VM 
07-15 20:34:29.418 27361-27361/test.game W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x412b52a0) 
07-15 20:34:29.498 27361-27361/test.game E/AndroidRuntime: FATAL EXCEPTION: main java.lang.IllegalStateException: onMeasure() did not set the measured dimension by calling setMeasuredDimension() 
at android.view.View.measure(View.java:15293) 
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617) 
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399) 
at android.view.View.measure(View.java:15288) 
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617) 
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399) 
at android.view.View.measure(View.java:15288) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4876) 
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
at android.view.View.measure(View.java:15288) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4876) 
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396) 
at android.widget.LinearLayout.measureVertical(LinearLayout.java:681) 
at android.widget.LinearLayout.onMeasure(LinearLayout.java:574) 
at android.view.View.measure(View.java:15288) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4876) 
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2397) 
at android.view.View.measure(View.java:15288) 
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1974) 
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1217) 
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1390) 
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1113) 
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4481) 
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) 
at android.view.Choreographer.doCallbacks(Choreographer.java:555) 
at android.view.Choreographer.doFrame(Choreographer.java:525) 
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711) 
at android.os.Handler.handleCallback(Handler.java:615) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4867) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774) 
at dalvik.system.NativeStart.main(Native Method) 

On dirait, c'est parce que je n'ai pas écrit setMeasuredDimension() lorsque la méthode remplaçant onMeasure(). En outre, les docs disent que vous devez écrire cette ligne sur votre onMeasure, sinon l'exception IllegalStateException sera lancée (see it here).

Mais je ne onMeasure pas partout PRÉPONDÉRANTS dans mon projet tout, donc problème n'est pas ici (au moins pas de mon côté dans ce cas).

Peu de choses à noter:

  • ce journal complet est logcat, et l'une de ces lignes ("à android ....") Ne lie pas à mon code, tout va à la source - cela signifie que tous ces liens sont gris
  • cette exception se produit toujours uniquement sur mon S3 Mini (android 4.1.2), mais jamais est arrivé sur mon ancien Galaxy Ace S5830i (android 2.3.6) (et oui , Je l'ai testé beaucoup - plus de 20 heures sur le vieux téléphone et l'application fonctionne encore!).
  • n'a jamais eu lieu dans l'émulateur
  • il n'y a pas des opérations « vue redimensionnement » en cours d'exécution en arrière-plan, ce qui pourrait provoquer cette exception

Je voudrais un peu de code, mais je n'ai absolument aucune idée où cette exception pourrait être jeté.

Si quelqu'un peut aider, je serais vraiment, vraiment reconnaissant. Je suis perdu à ce stade ...

Répondre

1

Puisqu'il n'y a pas de code, c'est juste une supposition aléatoire. Vous pouvez commencer par rechercher des activités dans lesquelles vous avez ajouté des fragments. Il se peut que l'activité contenant un fragment ait été détruite sur l'appareil en raison de l'inactivité pendant une longue période (et des besoins en mémoire du système, ce qui explique la raison pour laquelle vous trouvez le bogue sur un périphérique et pas sur l'autre). Le cas est donc que le fragment peut faire référence à une vue qui pourrait ne pas être attachée à la fenêtre maintenant. (Vous pouvez également rechercher des vues qui utilisent des adaptateurs de fragments tels que viewPager, etc si vous les avez utilisées).

+0

Donc, vous pensez que cela pourrait causer, après un certain temps, une vue inexistante? J'ai peu d'entre eux référé comme une vue statique. En passant, j'ai un viewPager dans mon application, que je considère comme viewPager statique aussi. Je vais regarder. – BlackJack

+0

Semble être la cause la plus probable. Tout le meilleur frère! De telles erreurs sont les plus difficiles à trouver et à corriger. –

+0

Merci, mais rendre viewPager non-statique n'a pas aidé :(Je vais essayer de réduire plus de vues statiques dans mon application, mais c'était le plus grand espoir: / – BlackJack