Quelle est cette erreur, et pourquoi se produit-elle ?
05-17 18:24:57.069: ERROR/WindowManager(18850): Activity com.mypkg.myP has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44c46ff0 that was originally added here
05-17 18:24:57.069: ERROR/WindowManager(18850): android.view.WindowLeaked: Activity ccom.mypkg.myP has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44c46ff0 that was originally added here
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.view.ViewRoot.<init>(ViewRoot.java:231)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.view.Window$LocalWindowManager.addView(Window.java:424)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.app.Dialog.show(Dialog.java:239)
05-17 18:24:57.069: ERROR/WindowManager(18850): at com.mypkg.myP$PreparePairingLinkageData.onPreExecute(viewP.java:183)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.os.AsyncTask.execute(AsyncTask.java:391)
05-17 18:24:57.069: ERROR/WindowManager(18850): at com.mypkg.myP.onCreate(viewP.java:94)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2544)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.app.ActivityThread.access$2200(ActivityThread.java:126)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.os.Handler.dispatchMessage(Handler.java:99)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.os.Looper.loop(Looper.java:123)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.app.ActivityThread.main(ActivityThread.java:4595)
05-17 18:24:57.069: ERROR/WindowManager(18850): at java.lang.reflect.Method.invokeNative(Native Method)
05-17 18:24:57.069: ERROR/WindowManager(18850): at java.lang.reflect.Method.invoke(Method.java:521)
05-17 18:24:57.069: ERROR/WindowManager(18850): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
05-17 18:24:57.069: ERROR/WindowManager(18850): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
05-17 18:24:57.069: ERROR/WindowManager(18850): at dalvik.system.NativeStart.main(Native Method)
Vous essayez d'afficher une boîte de dialogue après avoir quitté une activité.
[EDIT]
Cette question est l'une des plus recherchées sur google pour les développeurs android, C'est pourquoi j'ai ajouté quelques points importants des commentaires, qui pourraient être plus utiles pour le futur enquêteur sans aller en profondeur de la conversation des commentaires.
Réponse 1 :
Vous essayez d'afficher une boîte de dialogue après avoir quitté une activité.
Réponse 2
Cette erreur peut être un peu trompeuse dans certaines circonstances (bien que la réponse soit tout à fait exacte). la réponse reste tout à fait exacte), c'est-à-dire que dans mon cas, une exception non gérée a été lancée dans une activité. Dans mon cas, une exception non gérée a été levée dans une AsyncTask, ce qui a provoqué l'arrêt de l'activité. l'activité s'est arrêtée, puis une boîte de dialogue de progression ouverte a provoqué cette > exception. exception... donc la 'vraie' exception se trouvait un peu plus tôt dans le journal.
Réponse 3
Appelez dismiss() sur l'instance de dialogue que vous avez créée avant de quitter votre > activité, par exemple dans onPause().
activité, par exemple dans onPause() ou onDestroy().
La solution consiste à appeler dismiss()
sur le Dialog
que vous avez créé dans viewP.java:183
avant de quitter l'Activité
, par exemple dans onPause()
. Toutes les Fenêtres
et Dialogs
doivent être fermées avant de quitter une Activité
.
Si vous utilisez AsyncTask
, ce message peut être trompeur. Si vous regardez dans votre journal, vous pouvez trouver une autre erreur, probablement dans la méthode doInBackground()
de votre AsyncTask
, qui fait exploser votre Activity
actuelle, et donc une fois que l'AsyncTask
revient... eh bien, vous connaissez la suite. D'autres utilisateurs l'ont déjà expliqué ici :-)