Android AsyncTask не останавливается при отмене, почему?

У меня есть AsyncTask, которую я отключил в событии жизненного цикла Activity onPause, поэтому она не запускается, когда кто-то покидает приложение, но продолжает работать, несмотря на это. Я добавил трассировку, и этот фрагмент показывает проблему.

    Trace.d(TAG,"Task state: " + myTask.getStatus() );
    myTask.cancel(true);
    Trace.d(TAG,"Task state: " + myTask.getStatus() );

Выходы:

Task state: RUNNING
Task state: RUNNING

Почему метод cancel () не влияет на состояние задачи? Я заметил, что в документации говорится, что метод cancel будет «пытаться» остановить задачу, но при каких обстоятельствах он не удастся? Задача определенно выполняется, поскольку она выводит журнал каждые десять секунд, и, как вы можете видеть выше, ее статус возвращается как запущенный.

Обновление: я добавил трассировку, чтобы показать мне состояние isCancelled (), и это ДЕЙСТВИТЕЛЬНО меняется . Таким образом, вызов cancel (true) изменяет состояние отмены с false на true, но, по-видимому, не влияет на состояние или останавливает поток.

16
задан Ollie C 10 February 2011 в 16:19
поделиться