2016-09-16 3 views
-1

Как я могу запустить AsyncTask в жизненном цикле фрагмента, если Мне нужно onCreateView() для запуска до onPostExecute()? Я знаю, что могу просто запустить AsyncTask в onCreateView(), но мне интересно, есть ли какая-либо гарантия того, что поток пользовательского интерфейса достигнет определенного момента, прежде чем передавать любые завершенные фоновые задачи. Что заставляет поток пользовательского интерфейса перейти к AsyncTask по завершении?Можно ли запустить AsyncTask во фрагменте перед созданием представления?

+0

onAttach() и onCreate() start before onCreateView() – XxGoliathusxX

ответ

1

Как рано я могу начать AsyncTask в фрагменте жизненного цикла

вы можете начать AsyncTask в OnCreate(), но это не имеет значения.

Что заставляет поток пользовательского интерфейса перейти к AsyncTask по завершении?

AsyncTask использует обработчик для обновления пользовательского интерфейса, что означает, что он отправляет сообщение в очередь потока пользовательского интерфейса, которое должно выполняться некоторое время в будущем. Хотя вы не можете знать, когда это произойдет, в вашем случае это будет почти всегда выполняться после установки фрагмента.

+0

Я добавил акцент на ключевую часть моего вопроса. Мне нужно знать, может ли «почти всегда» быть гарантией. – cambunctious

+0

Я могу выделить его жирным шрифтом, но это то, что есть. Почти всегда. Вы не можете знать. Вы можете изменить логику своего кода. Если необходимо выполнить выполнение onpost до создания пользовательского интерфейса фрагмента, сделайте это в действии, прежде чем добавлять фрагмент или предыдущее событие/экран. – masp

0

Для этого нет гарантий, так как AsyncTask предполагается работать асинхронно, и вы не можете предсказать, когда он должен работать.

Вы можете, однако, управлять этим поведением, выполнив AsyncTask перед созданием экземпляра и просто передать результат AsyncTask вашему фрагменту. Этот подход имеет смысл, потому что если вы хотите запустить его перед вызовом onCreateView(), вам может не понадобиться переменная состояния или экземпляра фрагмента.

Смежные вопросы