Как распространяется AsyncTaskРабота - PullRequest
2 голосов
/ 14 апреля 2011

Я хотел бы знать, как это работает. Я прочитал документацию пару раз, но не понял.

Я заметил, что в некоторых случаях onPostExecute ничего не делает.

Может кто-нибудь дать мне небольшое объяснение?

Ответы [ 4 ]

11 голосов
/ 14 апреля 2011

AsyncTask - это класс, производный от Thread и предоставляющий вам простой и правильный способ выполнения некоторых задач в фоновом режиме с возможностью уведомления UI Thread.

Чтобы использовать его, вы должны создать class, который extends, и определить параметры типа.Это Params, Progress и Result.Подробнее о них здесь .

onPostExecute() - это метод, который вызывается, когда doInBackground() завершает свое выполнение, но onPostExecute() запускается в потоке пользовательского интерфейса.Таким образом, вы можете уведомить пользовательский интерфейс о проделанной работе.

Вы можете увидеть пример AsyncTask использования здесь .

3 голосов
/ 14 апреля 2011

Часть <Void, Void, Long> - это то, что в Java называется Generics .Он используется в тех классах, где оригинальный кодер хочет, чтобы он использовался независимо от того, какие типы выберет «конечный пользователь».

Обычно вы используете onPre/PostExecute(), когда хотите запустить / остановить диалог прогресса..

Если вы хотите обновить пользовательский интерфейс во время выполнения без диалогового окна прогресса, вы можете выполнить действия в onProgressUpdate() (т.е. вы загружаете изображения из Интернета и отображаете их по мере их загрузки)

Если у вас есть диалоговое окно с индикатором выполнения, вам придется использовать их все для обновления индикатора выполнения.

2 голосов
/ 14 апреля 2011

Этот пост хорошо объясняет концепцию AsyncTask на диаграмме!

0 голосов
/ 09 августа 2012

{onPostExecute()} используется, когда вы хотите что-то сделать после выполнения фоновой задачи {(doInBackground())}.

Например,

start Progress Bar @ {onPreExecute()}
running Progress Bar @ {doInBackground()}
stop Progress Bar @ {onPostExecute()}
...