元々あった窓からアクティビティが漏れた

このエラーはどのようなもので、なぜ起こるのでしょうか?

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)
ソリューション

アクティビティを終了した後にダイアログを表示させようとしています。

[EDIT]

この質問は、googleでandroid developerのトップ検索の一つです。 そのため、コメントからいくつかの重要なポイントを追加しました。これは、コメントの会話を深く掘り下げることなく、将来の調査者にとってより役立つかもしれません。

回答1 :

アクティビティを終了した後にダイアログを表示させようとしています。

**回答2

このエラーは、状況によっては少し誤解を招く可能性があります。 答えは完全に正しいのですが) - 例えば、私のケースでは、処理されない例外が 私のケースでは、AsyncTaskで未処理のExceptionがスローされ、それがアクティビティのシャットダウンを引き起こしました。 私の場合、AsyncTaskで未処理のExceptionが発生し、アクティビティがシャットダウンした後、開いていたprogressdialogがこのExceptionを発生させました。 つまり、「本当の」例外はログの少し前にあったということです。

回答3)

アクティビティを終了する前に作成したDialogインスタンスでdismiss()を呼び出します。 例えばonPause()やonDestroy()のように。

解説 (7)

解決策は、onPause()などで、Activityを終了する前に、viewP.java:183で作成したDialogdismiss()を呼び出すことです。アクティビティを終了する前に、すべての WindowDialog を閉じる必要があります。

解説 (2)

AsyncTaskを使用している場合、おそらくこのログメッセージは欺瞞に満ちています。おそらく、AsyncTaskdoInBackground()メソッドにエラーがあり、それが現在のActivityを爆発させていて、AsyncTask`が戻ってくると......ということになるのでしょう。他のユーザーがすでにここで説明してくれています :-)

解説 (2)