私は、アプリケーションを終了するときにループを停止するループを実行するAsyncTaskを持っており、グローバルな「停止」ブール値が設定され、ループを停止してAsyncTaskを終了します。Android AsyncTaskを終了する
私はこのコードを持っている:今ここ
@Override
public void onBackPressed()
{
KillAllThreads();
}
@Override
public void onUserLeaveHint()
{
KillAllThreads();
}
事です。 AsyncTaskを開始すると、onUserLeaveHint()がすぐに呼び出され、ホームボタンが押されると、このメソッドは実行されません。 AsyncTaskを開始せずに何もせずにアクティビティをロードさせると、Homeを押すとonUserLeaveHint()メソッドが起動します。
ユーザーがアプリをクリックするとスレッドを停止する方法を教えてください。
コール.cancelから?私はonStop()でmyTask.cancel(true)を呼び出すことも試みました。ちょうどクラッシュします。 – Jesse
cancel(false)を呼び出すと、falseは進行中のタスクが完了することを意味し、これによりonPostExecute(...)が呼び出されないことが保証されます。タスクを終了するには、doInBackground(...)から定期的にisCancelled()によって返された値をチェックする必要があります。基本的には、cancelを呼び出すと、isCancelled()がtrueであることを意味するので、if(isCancelled())break;という行を追加します。 doInBackground()メソッドに追加します。 – Kenny
がonStopで試したところ、myTask.cancel(false);すぐにクラッシュする – Jesse