2015-04-08 3 views
0

Я использую задачу асинхронной следующим образом:Как остановить повторение асинхронной задачи?

private first_async first; // global variable 

// In onCreate 
first = new first_async(); 
first.execute(1); 

// then on click of the button I want to stop this, but it works after some time like this: 
if (!first.isCancelled()) { 
    first.cancel(false); 
} 

private class first_async extends AsyncTask<Integer, Void, Void> { 

    int var; 
    @Override 
    protected void doInBackground(Integer... params) { 
     while (!isCancelled()) { 
      var = params[0]; 
      // do some task 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(void thumb) { 
     super.onPostExecute(thumb); 
     if (var >= 7) { 
     } else { 
      first_time_imageURL = new first_time_get_images_URL(); 
      first_time_imageURL.execute(var+1); 
     } 
    } 
} 

Таким образом, проблема заключается в том, что отмену на работе асинхронных задач после некоторого времени. Если я ошибаюсь, пожалуйста, поправьте меня или, если есть какая-то другая альтернатива, укажите это.

ответ

0
if (!first.isCancelled()) { 
first.cancel(false); 
} 

False должно быть истинным здесь, что отменяет Asynctask. Таким образом:

first.cancel(true); 
Смежные вопросы