2016-05-17 2 views

ответ

0

Одним словом, вы не можете.

Когда вы вызывали методы .cancel (true), AsyncTask выполняет onCancelled вместо onPostExecute.

onPostExecute означает, что фоновые задачи закончены, обратно в пользовательский интерфейс.

думаю есть новый способ.

В onPostExecute просто добавление булева isProcessing = true;

, когда вы не обрабатываете onPostExecute, просто измените значение isProcessing на false. (Я не уверен, о том, что путь)

@Override 
protected void onPostExecute(Long result) { 
    if (isProcessing) { 
     Log.d(TAG, "onPostExecute - " + result); 
    } 
} 
0

На самом деле, AsyncTask.cancel() не убивает тема без учета последствий. Все, что он делает, устанавливает AsyncTask в состояние «отменено». Разработчик AsyncTask должен придерживаться условия отмены.

Одна из стратегий - время от времени проверять isCancelled() и действовать соответствующим образом. onPostExecute вы также можете прочитать «отмененное» состояние и вызвать onCancelled() (или любую другую функцию с общей логикой) вручную.