[英]Cancel AsyncTask with Progress Dialog button
我需要使用进度对话框中的按钮来取消AsyncTask。
我已经使用按钮创建了“进度”对话框。 这里是:
@Override
protected void onPreExecute() {
pDialog = new ProgressDialog(DSDactivity.this);
pDialog.setMessage(getResources().getString(R.string.pDialog));
pDialog.setCancelable(false);
pDialog.setButton("Cancel", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
pDialog.dismiss();
asyncCodelist.cancel(true);
}
});
pDialog.show();
}
我有两个问题:
当我单击进度对话框上的“取消”时,异步任务继续执行他正在做的事情
Eclipse给了我这种减弱:
不建议使用AlertDialog类型的方法setButton(CharSequence,DialogInterface.OnClickListener)
@Override
protected void onPreExecute() {
pDialog = new ProgressDialog(DSDactivity.this);
pDialog.setMessage(getResources().getString(R.string.pDialog));
pDialog.setCancelable(true);
pDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
myTask.cancel(true);
dialog.dismiss();
}
}
}
然后,正如我的链接所述,创建您的AsyncTask并将其存储:
MyAsyncTask myTask=null;
并像这样执行它:
myTask = new MyAsyncTask();
myTask.execute();
myTask.cancel(true);
完全停止myTask.cancel(true);
如文档所述:
To ensure that a task is cancelled as quickly as possible, you should always check the return value of isCancelled() periodically from doInBackground(Object[]), if possible (inside a loop for instance.)
setButton()
方法现在不推荐使用ProgressDialog
,因此发出警告。 它肯定会工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.