実行中の非同期タスクを停止する最良の方法を知りたいです。
私が試してみました
@Override protected void onCancelled() {
super.onCancelled();
mTask.cancel(true);
}
私も試しました
asyncTaskObject.cancel(true);
これは、イベントに関連付けられている場合に特に機能します。
しかし、シナリオが --- 4 つの AsyncTask があるとします。最初に 2 番目を呼び出し、2 番目が 3 番目を呼び出し、3 番目が 4 番目を呼び出します。ユーザーがアクティビティに入ると、ダイアログボックスはありません。そうでなければ、そこで onCancel メソッドを使用できたはずです。ユーザーがページ上の任意の場所をクリックすると、ダイアログ ボックスが表示され、ユーザーがどこもクリックしない場合、ダイアログ ボックスは表示されませんが、非同期タスクはバックグラウンドで実行され続けます。ユーザーが [戻る] ボタンまたはホームへのナビゲーション アイコンをクリックするとします。ページ user.is は現在のアクティビティから取り出されます。しかし、非同期タスクはバックグラウンドで実行され続け、最終的にアプリがクラッシュします。onBackPressed の cancel メソッドに慣れました。しかし、問題は、どのタスクが実行されているかを確認できず、アプリが再びクラッシュすることです。
これから抜け出す方法は何ですか?