3
我知道以前的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?
我在靜態方法中使用它,所以我需要這個靜態對象。我不能只做新的ImageTask.execute(響應); - 我需要聲明它爲靜態的第一個 – user2976267 2015-04-01 16:15:24
你不能使用如下的變量嗎? 'static ImageTask newInstance = new ImageTask(/ * params * /); newInstance.execute(/ * params * /);' 或 'ParentClass.staticInstance = new ImageTask(/ * params * /); ParentClass.staticInstance.execute(/ * params/*);' 請分享聲明代碼,這樣我可以更好地理解。 – SlashG 2015-04-01 16:25:11
我像這樣使用它 - 它是\t protected static ImageDownloadTask imageTask;在聲明和imageTask =新的ImageDownloadTask();在onCreate(); – user2976267 2015-04-01 16:38:30