我不太清楚AsyncTask的功能。
我试图在ProgressDialog中放一个按钮来取消AsynkTask。
问题是当我调用方法时:runner.cancel(true); 似乎ProgressDialog消失了。但asynkTask继续在后台工作。
我展示了我的代码:
public class AsyncTaskRunner extends AsyncTask<String, String, String> {
@Override
protected void onCancelled(String result) {
pDialog.dismiss();
super.onCancelled(result);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(context);
pDialog.setCancelable(false);
pDialog.setMessage(context.getResources().getString(
R.string.pDialog));
if (codeLink == 2) {
pDialog.setButton("cancel", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
runner.cancel(true);
}
});
}
pDialog.show();
}
@Override
protected String doInBackground(String... params) {
// Here download the data.
}
@Override
protected void onPostExecute(String result) {
//Here I make the parser.
}
}
我的猜测:
这可能是这样做门doInBackground()但执行OnPostExecute()? 如果它是烷氧基,我怎么擦除所有东西?还有OnPostExecute()??
答案 0 :(得分:0)
AsyncTask
在后台运作。先调用onPreExecute
然后调用doInBackground
,然后在完成后台任务后调用onPreExecute
。
继续检查isCancelled()
中的doInBackground
。
protected Object doInBackground(Object... x) {
while (/* condition */) {
// work...
if (isCancelled()) break;
}
return null;
}