我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()
?