Я знаю, что выполняется предыдущее выполнение 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
Не можете ли вы использовать переменную следующим образом? 'static ImageTask newInstance = new ImageTask (/ * params * /); newInstance.execute (/ * params * /); ' или ' ParentClass.staticInstance = new ImageTask (/ * params * /); ParentClass.staticInstance.execute (/ * params/*); ' Просьба поделиться кодом декларации, чтобы я мог лучше понять. – SlashG
Я использую его так: это \t protected static ImageDownloadTask imageTask; в объявлении и imageTask = new ImageDownloadTask(); in onCreate(); – user2976267