UIの作成に少し時間がかかる(いくつかのものを処理する必要がある)アプリを持っています。だから、AsynchTaskを使ってUIをビルドします(バックグラウンド処理中に進捗ダイアログが表示され、その後UIが更新されます)。私は、このAsynchTaskをOnRestoreInstanceState()から呼び出せるようにしたいので、私は回転でUIを再構築することができます。Android:AsynchTaskがonRestoreInstanceState()から呼び出されたときに失敗する
01-05 12:28:45.194: ERROR/WindowManager(409): android.view.WindowLeaked: Activity com.MyActivity has leaked window [email protected] that was originally added here
01-05 12:28:45.194: ERROR/WindowManager(409): at android.view.ViewRoot.<init>(ViewRoot.java:247)
01-05 12:28:45.194: ERROR/WindowManager(409): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
01-05 12:28:45.194: ERROR/WindowManager(409): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
01-05 12:28:45.194: ERROR/WindowManager(409): at android.view.Window$LocalWindowManager.addView(Window.java:424)
01-05 12:28:45.194: ERROR/WindowManager(409): at android.app.Dialog.show(Dialog.java:241)
01-05 12:28:45.194: ERROR/WindowManager(409): at com.MyClass$MyAsynchTask.onPreExecute(MyClass.java:428)
詳細な対応をありがとうございます。あなたが与えた例を実装しましたが、私のonRestoreメソッドからAsynchTaskを実行しようとするとこのエラーが発生します:原因:java.lang.IllegalStateException:タスクを実行できません:タスクは既に実行されています(タスクは実行可能です....)android.os.AsyncTask.execute(AsyncTask.java:383) – ab11
@ ab11:タスクを再実行することはできません。古いアクティビティでタスクを実行した場合は、新しいアクティビティで再実行する必要はありません。 – CommonsWare
私のタスクは、いくつかのものを(現在)直列化不可能なオブジェクトに処理してUIを作成するために使用されます。したがって、回転すると、このオブジェクトは失われます(私は現在格納されているバンドルにシリアル化できないため)。そのためAsynchTaskを再実行して復元したいのです。 AsynchTaskの新しいインスタンスを作成することができます(あなたの例のようにメンバ変数を使用するのではなく)。しかし、私がこれを行い、this.MyActivityをパラメータとして渡しても、私はまだ元の "ウィンドウが漏れた"例外を取得します。 – ab11