A atividade vazou janela que foi originalmente adicionada

Que erro é esse, e por que acontece?

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)
Solução

Você está a tentar mostrar um Diálogo depois de ter saído de uma Actividade.

[EDIT]

Esta pergunta é uma das principais pesquisas no google para desenvolvedores de andróides, Portanto, acrescentando poucos pontos importantes dos comentários, que poderiam ser mais úteis para o futuro investigador sem aprofundar a conversa de comentários.

Resposta 1 :

Você está a tentar mostrar um Diálogo depois de ter saído de uma Actividade.

**Resposta 2***

Este erro pode ser um pouco enganador em algumas circunstâncias (embora a resposta ainda é completamente precisa) - ou seja, no meu caso um Exceção sem manuseio foi jogada em uma AsyncTask, o que causou o Atividade para desligar, então um diálogo de progresso aberto causou isto Excepção... então a excepção 'real' foi um pouco mais cedo no registo

**Resposta 3***

Recusa de chamada() na instância de Diálogo que você criou antes de sair do seu Atividade, por exemplo, em onPause() ou onDestroy()

Comentários (7)

A solução é chamar dismiss() no Dialog que você criou em viewP.java:183 antes de sair da Activity, por exemplo, em onPause(). Todos os Windows&Dialogs devem ser fechados antes de sair de uma Activity.

Comentários (2)

Se você estiver utilizando AsyncTask, provavelmente essa mensagem de log pode ser enganosa. Se você procurar no seu log, você pode encontrar outro erro, provavelmente um no seu doInBackground() método da sua AsyncTask, que está fazendo sua Atividade explodir, e assim que a AsyncTask voltar... bem, você sabe o resto. Alguns outros usuários já explicaram que aqui :-)

Comentários (2)