gpt4 book ai didi

android - AsyncTask 无法执行任务 : the task has already been executed

转载 作者:太空狗 更新时间:2023-10-29 14:58:17 25 4
gpt4 key购买 nike

我知道之前执行的 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);

首先,这个状态,通过日志判断是FINISHED。那它怎么能运行呢?以及如何正确重启此 AsyncTask?

最佳答案

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

希望我能帮上忙。

作为引用,请查找标题“线程规则”here .

关于android - AsyncTask 无法执行任务 : the task has already been executed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29395334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com