2010-07-06 4 views
0

J'ai thread dans "onCreate" qui obtient du contenu à partir du web. Pendant que le contenu est en cours, j'ai un dialogue de progression. Mais si je fais pivoter l'affichage (en mode paysage) pendant que celui-ci est en cours d'exécution, mon application ferme la fenêtre Force. Dans le journal, j'ai ceci: "fil conducteur sortant du fait d'une exception non interceptée"Thread Android principal sortant

Voici mon journal:

W/dalvikvm (17144): threadid = 3: fil sortant à l'exception uncaught (groupe = 0x40013140) E/AndroidRuntime (17144): gestionnaire Uncaught: thread principal sortant en raison d'une exception non interceptée E/AndroidRuntime (17144): java.lang.IllegalArgumentException: Voir pas attaché au gestionnaire de fenêtres E/AndroidRuntime (17144): at android .view.WindowManagerImpl.findViewLocked (WindowManagerImpl.java:356) E/AndroidRuntime (17144): à l'adresse android.view.WindowManagerImpl.removeView (WindowManagerImpl.java:201) E/AndroidRuntime (17144): à l'adresse android.view.Window $ LocalWindowManager.removeView (Window.java:400) E/AndroidRuntime (17144): à l'adresse android.app.Dialog.dismissDialog (Dialog.java:268) E/AndroidRuntime (17144): at android.app.Dialog.access $ 000 (Dialog.java:69) E/AndroidRuntime (17144): à l'adresse android.app.Dialog $ 1.run (Dialog.java:103) E/AndroidRuntime (17144): at android.app.Dialog.dismiss (Dialog.java:252) E/AndroidRuntime (17144): à com.webservice.KursnaLista $ 1.handleMessage (KursnaLista.java:77) E/AndroidRuntime (17144) : at android.os.Handler.dispatchMessage (Handler.java:99) E/AndroidRuntime (17144): à l'adresse android.os.Looper.loop (Looper.java:123) E/AndroidRuntime (17144): à android. app.ActivityThread.main (ActivityThread.java:3948) E/AndroidRuntime (17144): à java.lang.reflect.Method.invokeNative (méthode native) E/AndroidRuntime (17144): à java.lang.reflect.Method.invoke (Method.java:521) E/AndroidRuntime (17144): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:782) E/AndroidRuntime (17144): à l'adresse com.android.internal.os.ZygoteInit.main (ZygoteInit.java : 540) E/AndroidRuntime (17144): à dalvik.system.NativeStart.main (méthode native) I/dalvikvm (17144): threadid = 7: réagir au signal 3 I/ActivityManager (59): processus com. webservice (pid 17144) est mort.

+2

Il devrait indiquer quelle est l'exception dans le logcat - pouvez-vous poster cela. En outre, lorsque vous faites pivoter l'affichage, il appelle onResume et quelques autres méthodes - pouvez-vous s'il vous plaît poster le reste du code dans cette activité? – xil3

+1

Et, s'il vous plaît, vous avez reçu beaucoup d'aide sur les questions précédentes - allez et acceptez les réponses (cliquez sur la coche) –

+1

Soyez conscient que lorsque vous faites pivoter l'affichage, l'activité est tuée et une nouvelle est créée, signifiant surCréer () sera appelé à nouveau. – ian

Répondre

2

Ce qui se passe est sur le changement d'orientation, l'activité est tuée et recréée. Mais puisque vous avez démarré un thread et que le thread est toujours en cours d'exécution, il n'est pas tué, et quand il se termine et essaie de fermer la boîte de dialogue Progress, cela provoque le FC car la boîte de dialogue de progression n'existe pas. C'est un problème assez commun, vous pouvez consulter la bibliothèque droid-fu qui essaie de résoudre ce problème, ou vous pouvez être plus intelligent avec votre tâche Threaded (comme si cela va prendre un temps décent pour terminer, puis peut-être le mettre en un service d'arrière-plan).

+0

Est-il intelligent de mettre du code qui ferme la boîte de dialogue dans try catch block? Je pense que je n'aurai pas de FC. – user345602

Questions connexes