Что означает «работает в потоке пользовательского интерфейса» для onPostExecute ()?

Рассмотрите запуск AsyncTask в Activity. Что произойдет, если действие приостановлено или уничтожено? Будет ли запущено onPostExecute ()? Если да, то какой поток пользовательского интерфейса будет использоваться?

Просто интересуюсь.

Спасибо заранее.

Solutions Collecting From Web of "Что означает «работает в потоке пользовательского интерфейса» для onPostExecute ()?"

Потоки пользовательского интерфейса доступны на протяжении всей видимой жизни вашего приложения, которое может охватывать комбинацию нескольких действий.

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

Вы можете использовать runOnUiThread в своем потоке, чтобы вносить изменения в Views. Но поскольку AsyncTask имеет метод onPostExecute (который также работает в потоке пользовательского интерфейса), поэтому вам не нужно использовать runOnUiThread .


Обновить

Что касается вашего вопроса: Да, onPostExecute все равно будет вызван (потому что он вызван отдельным потоком), даже если ваша активность будет уничтожена, и если метод будет работать с представлениями, вы просто получите ошибку Force Close, потому что ссылка на вашу активность недоступна больше.

Это приведет к сбою в onPostExecute() из-за потока пользовательского интерфейса, как диалоговое onPostExecute() процесса. Это случается со мной, моя деятельность разрушается, прежде чем моя Asynctask завершает. В нем говорится, что «окно просочилось …..» Итак, я onPostExecute() . Больше никаких сбоев ..

Не забудьте вызвать функцию отмены, чтобы она была лишена исключения в вас на Pause или onDestroyed.