我正在运行asynctask时显示可取消的进度对话框。当我按下后退按钮时,我希望对话框都消失,同时也要取消正在运行的异步任务。 问题是:asynctask不知道对话框实例,所以在取消asynctask后我无法取消对话框。
目前只有在我按两次后退按钮后它才被取消。
答案 0 :(得分:1)
对话框有一个onDismissed
callback,用它来杀死异步任务。
答案 1 :(得分:1)
您可以在取消时使用ProgressDialog回调:
this.dialog = new ProgressDialog(context);
this.dialog.setMessage("Loading...");
this.dialog.setCancelable(true);
this.dialog.setOnCancelListener(new DialogInterface.OnCancelListener()
{
@Override
public void onCancel(DialogInterface dialog)
{
// cancel AsyncTask
cancel(false);
}
});