У меня есть AsyncTask, который я отключил в событии жизненного цикла onPause Activity, поэтому он не запускается, когда кто-то покидает приложение, но, несмотря на это, продолжает работать. Я добавил трассировку, и этот фрагмент показывает проблему.
Trace.d(TAG,"Task state: " + myTask.getStatus() );
myTask.cancel(true);
Trace.d(TAG,"Task state: " + myTask.getStatus() );
Выходы:
Task state: RUNNING
Task state: RUNNING
Почему метод отмены() никак не влияет на состояние задачи? Я заметил, что в документах говорится, что метод отмены «попытается» остановить задачу, но при каких обстоятельствах это не удастся? Задача определенно выполняется, так как она выводит вывод журнала каждые десять секунд, и, как вы можете видеть выше, ее статус возвращается как работающий.
Обновление: я добавил трассировку, чтобы показать мне состояние isCancelled(), и это ДЕЙСТВИТЕЛЬНО меняется. Таким образом, вызов cancel(true) изменяет состояние отмены с false на true, но, по-видимому, не влияет на состояние или останавливает поток.
FINISHED
только тогда, когда вызываетсяfinish()
, и это происходит во внутреннем обработчике, используемомFutureTask
.cancel()
иisCancelled()
на самом деле вызываются для этогоFutureTask
члена. Если эта задача отменена, вызываетсяonCancelled()
. Можно ли это использовать для тестов? источники: google. com/codesearch/p?hl=en#uX1GffpyOZk/core/java/android/os/ - person bigstones   schedule 10.02.2011