これは別の質問と重複している可能性がありますが、よくわかりません。同様の質問を読んだことがありますが、意味を理解できなかったか、指定されたソリューションをうまく適用できませんでした。
複数のタブを持つアプリケーションを作成しました。ほとんどのタブは、ユーザーがタブにスライドしたときに ASyncTask を使用してデータを更新します。ただし、AST の実行中にアクティビティに関する何かが変更された場合 (ユーザーが画面を回転させたり、戻るボタンを使用して終了した場合など、頻繁に発生します)、アプリケーションは強制終了 (ANR) します。
私のLogCatで起こっていることは次のとおりです。
10-30 11:30:01.422: E/AndroidRuntime(4687): FATAL EXCEPTION: main
10-30 11:30:01.422: E/AndroidRuntime(4687): java.lang.NullPointerException
10-30 11:30:01.422: E/AndroidRuntime(4687): at com.appconstructor.khcreates.Core$refreshList.onPostExecute(Core.java:913)
10-30 11:30:01.422: E/AndroidRuntime(4687): at com.appconstructor.khcreates.Core$refreshList.onPostExecute(Core.java:1)
10-30 11:30:01.422: E/AndroidRuntime(4687): at android.os.AsyncTask.finish(AsyncTask.java:631)
10-30 11:30:01.422: E/AndroidRuntime(4687): at android.os.AsyncTask.access$600(AsyncTask.java:177)
10-30 11:30:01.422: E/AndroidRuntime(4687): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
10-30 11:30:01.422: E/AndroidRuntime(4687): at android.os.Handler.dispatchMessage(Handler.java:99)
10-30 11:30:01.422: E/AndroidRuntime(4687): at android.os.Looper.loop(Looper.java:137)
10-30 11:30:01.422: E/AndroidRuntime(4687): at android.app.ActivityThread.main(ActivityThread.java:4745)
10-30 11:30:01.422: E/AndroidRuntime(4687): at java.lang.reflect.Method.invokeNative(Native Method)
10-30 11:30:01.422: E/AndroidRuntime(4687): at java.lang.reflect.Method.invoke(Method.java:511)
10-30 11:30:01.422: E/AndroidRuntime(4687): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-30 11:30:01.422: E/AndroidRuntime(4687): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-30 11:30:01.422: E/AndroidRuntime(4687): at dalvik.system.NativeStart.main(Native Method)
私が見る限り、ASyncTask (refreshlist) は、変更を適用するアプリケーションが残っていないという事実を処理できません。
私がやりたいことは、アクティビティがない場合に強制終了しないアプリケーションを作成することです。
- EITHER アクティビティが停止した場合に ASyncTask を停止したい
- または、アプリケーションでタスクを実行し続け、強制的に閉じないようにしたい (例: アクティビティが接続されていない場合、onPostExecute() では何も起こりません。
問題を解決するために私の onPostExecute() コードが必要な場合は、お知らせください。
これはしばらくの間私を悩ませてきました、そして私はこれを自分で解決することができませんでした. このバグがあると、私のアプリのエクスペリエンスはかなりひどいものになります。助けていただければ幸いです。
前もって感謝します!