操作AsyncTask

时间:2014-11-20 10:10:45

标签: android android-asynctask

我不太清楚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()??

1 个答案:

答案 0 :(得分:0)

AsyncTask在后​​台运作。先调用onPreExecute然后调用doInBackground,然后在完成后台任务后调用onPreExecute

继续检查isCancelled()中的doInBackground

 protected Object doInBackground(Object... x) {
    while (/* condition */) {
      // work...
      if (isCancelled()) break;
    }
    return null;
 }