我知道之前的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?
static ImageTask newInstance = new ImageTask( /* 参数 */ ); newInstance.execute( /* 参数 */ );
或者ParentClass.staticInstance = new ImageTask( /* 参数 */ ); ParentClass.staticInstance.execute ( /* 参数 */ );
请分享声明代码,这样我可以更好地理解。 - SlashG