Если действие убито, продолжается ли AsyncTask? - PullRequest
22 голосов
/ 08 марта 2011

Я думаю, что знаю ответ на этот вопрос, но продолжает ли AsyncTask продолжать работать после того, как его вызывающая активность была finish() ed?

    protected void onPreExecute() {
        Toast.makeText(getApplicationContext(), "Your data is processing.", Toast.LENGTH_LONG);
        finish();
    }

Редактировать: пока два разных ответа:)

Ответы [ 6 ]

13 голосов
/ 08 марта 2011

AsyncTask привязан к потоку пользовательского интерфейса, и если действие завершено, асинхронная задача отменяется.

[обновление] - Комментарий Hackbod ниже правильный.Следует отметить, что AsyncTasks должны быть недолговечными и поэтому не слишком беспокоиться об этой проблеме.AsycTask действительно исчезает только тогда, когда он завершен ИЛИ процесс завершен, что может произойти или не произойти после вызова завершения.

1 голос
/ 22 июня 2012

Я столкнулся с некоторыми странностями, связанными с асинхронными задачами, когда, если действие прерывается ОС и когда приложение возобновляется, асинхронные задачи иногда вообще не запускаются.Я не уверен, почему они попадают в это состояние.Если вы выполняете свои AsyncTasks в своем собственном потоке исполнителя, этого не происходит.Я могу столкнуться с каким-то странным обстоятельством.Я подумал, что в любом случае было бы полезно опубликовать здесь:).

1 голос
/ 08 марта 2011

Он продолжает работать, пока не закончится onPostExecute.

0 голосов
/ 11 июля 2016

Асинхронные задачи не влияют на жизненный цикл Activity или какие-либо изменения конфигурации. Они продолжают работать, пока не будет вызван метод onPostExecute ().

Вместо длительных операций следует использовать Сервисы.

0 голосов
/ 18 января 2016

Asynctask не привязаны ни к какому методу жизненного цикла Деятельности или Сервиса.

Он продолжает работать в отдельном потоке, пока onPostExecute () не будет выполнен в основном потоке.

0 голосов
/ 04 сентября 2014

Асинхронная задача продолжается до тех пор, пока onPostExecute () не будет завершен.

попробуйте сделать это, поставив тост на end () и onPostExecute (), чтобы увидеть, какой тост отображается первым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...