AsyncTask
Androidアプリケーションで使用しています。
これが私の仕事です:
public class MyTask extends AsyncTask<String, String, Boolean> {
private ProgressDialog progressDialog;
private boolean isCancelled = false;
public MyTask(ProgressDialog progressDialog) {
this.progressDialog = progressDialog;
}
@Override
protected Boolean doInBackground(String... params) {
try {
if (!isCancelled()) {
isCancelled = false;
} else
isCancelled = true;
} catch (Exception e) {
isCancelled = true;
}
return isCancelled;
}
@Override
protected void onCancelled() {
super.onCancelled();
isCancelled = true;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
progressDialog.dismiss();
if (!isCancelled) {
// start an activity
}
}
}
デバイスの戻るボタンを押したときにこのタスクをキャンセルし、 もキャンセルしたいのですProgressDialog
が、このタスクはすぐに実行されます。戻るボタンを押すProgressDialog
とキャンセルされますが、タスクは完了します。
これAsyncTask
は、次のようなアクティビティから呼び出されます。
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Loading");
progressDialog.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
if (myTask!= null
&& myTask.getStatus() != AsyncTask.Status.FINISHED
&& !myTask.isCancelled()) {
myTask.cancel(true);
}
}
});
progressDialog.show();
myTask = new MyTask(progressDialog);
myTask.execute();
onDismissListener
ログを記録すると、 の条件を実行した後にダイアログが閉じられる (呼び出される) ことがわかりましたonPostExecute()
。このタスクを適切にキャンセルするにはどうすればよいですか?
私の意図は、タスクが完了したかどうかにかかわらず、戻るボタンを押してタスクをキャンセルすることです。AsyncTask をその からキャンセルすることは可能onPostExecute()
ですか?