私のアクティビティでは、一連の画像をダウンロードする asynctask があります...(画像のサイズによっては時間がかかる場合があります)... asynctask を実行する前に、進行状況ダイアログonPreExecute
と通知を表示します (ユーザーが通知をクリックすると、進行状況ダイアログでアクティビティにリダイレクトされます)。asynctask が完了したら、onPostExecute
ダイアログと通知を削除しますonRetainNonConfigurationInstance
。asynctask を保存するために使用して画面の向きを処理し、画面が回転したときにタスクがまだ実行されているかどうかを確認し、まだ実行されている場合は進行状況ダイアログを表示します。走っているonCreate
問題 : 時々: 私の asynctask は 1 つのファイルだけをダウンロードし、それが強制終了されたようです...(logcat では例外ではありません)...その結果、私の通知は常にそこにあり、進行状況ダイアログも...そしてそれらはそこに残ります無期限に....
そこで Jeff Axelrod による解決策を試しました:アクティビティが強制終了される前に AsyncTask が完了していることを確認するにはどうすればよいですか? :
It looks like if I override the onPause() event in my activity, and from within the overridden onPause(), I call cancel(false) on the AsyncTasks, then the activity is not destroyed until the AsyncTasks are completed.
トリックを行うようですが、問題は myonPostExecute
が呼び出されなくなったことです。すべての画像は正常にダウンロードされますが、onPostExecute
実行されないため、通知と進行状況ダイアログは永久に残ります。
あなたの解決策を待っています!私は短いタスクにのみ非同期タスクを使用することを読みました。スレッドとハンドラーを使用すると問題が解決しますか? 後者が終了していない場合、アンドロイドは私のアクティビティまたはスレッドを殺しますか??