AsyncTask无法执行任务:任务已执行

时间:2015-04-01 15:51:45

标签: android android-asynctask

我知道以前的AsyncTask执行正在运行 - 我的问题是如何完成它并重新执行,因为我的参数已被更改。

    protected class ImageDownloadTask extends AsyncTask<Response, Void, Void>{

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                poolTasks.add(this);
            }

            @Override
            protected Void doInBackground(Response... params) {
                int count=params[0].getGetPosts().getPostsCount();
                for(int i = 0; i < count; i++){
                    Post post = params[0].getGetPosts().getPosts(i);

                    if(!isCancelled()){
                        try {

//some code to download images
} catch (Exception e) {


                        }
                        publishProgress();
                    } else poolTasks.remove(this);
                }
                return null;
            }

            @Override
            protected void onProgressUpdate(Void... values) {
                super.onProgressUpdate(values);
                adapter.notifyDataSetChanged();
            }

            @Override
            protected void onPostExecute(Void result) {
                super.onPostExecute(result);
                poolTasks.remove(this);
                adapter.notifyDataSetChanged();
            }

            @Override
            protected void onCancelled() {
                super.onCancelled();
                poolTasks.remove(this);
            }
        }

现在参数更新了我如何调用此任务:

     Log.d("MyLog"," imageTask.getStatus()="+imageTask.getStatus());
     if (imageTask.getStatus() == AsyncTask.Status.RUNNING){
         imageTask.cancel(true);
     }
     imageTask.execute(response);

首先,状态,由日志判断完成。那它怎么可能运行?以及如何正确重启AsyncTask?

1 个答案:

答案 0 :(得分:0)

根据个人经验,AsyncTask实例仅适用于一次执行。它不可重复使用。出于您的目的,您应该重新初始化它然后执行。

希望我能提供帮助。

供参考,查找标题&#39;线程规则&#39; here