Обработчик по сравнению с AsyncTask

Я смущен относительно того, когда можно было бы предпочесть AsyncTask Обработчику. Скажите, что у меня есть некоторый код, который я хочу выполнить каждый n секунды, которые обновят UI. Почему я выбрал бы один по другому?

127
задан Steve 26 March 2010 в 13:17
поделиться

3 ответа

IMO, AsyncTask был написан, чтобы обеспечить удобный, простой в использовании способ достижения фоновой обработки в приложениях Android, не беспокоясь о низком уровне сведения об уровне (потоки, циклы сообщений и т. д.). Он предоставляет методы обратного вызова, которые помогают планировать задачи, а также легко обновлять пользовательский интерфейс, когда это необходимо.

Однако важно отметить, что при использовании AsyncTask разработчик подчиняется его ограничениям, которые возникли из-за проектных решений, принятых автором класса. Например, Недавно я обнаружил, что существует ограничение на количество заданий, которые можно запланировать с помощью AsyncTasks.

Handler более прозрачен из двух и, вероятно, дает вам больше свободы; поэтому, если вам нужен больший контроль над вещами, вы должны выбрать Handler, иначе AsynTask будет работать нормально.

75
ответ дан 24 November 2019 в 00:47
поделиться

Если вы хотите выполнять вычисления каждые x секунд, вам, вероятно, следует запланировать Runnable для Handler postDelayed () ) и что Runnable должен запускаться в текущем пользовательском интерфейсе нить. Если вы хотите запустить его в другом потоке, используйте HandlerThread. AsyncTask проще в использовании, но не лучше, чем обработчик.

16
ответ дан 24 November 2019 в 00:47
поделиться

Мое эмпирическое правило:

  • Если вы делаете что-то изолированное, связанное с UI, например, загружаете данные для представления в списке, используйте AsyncTask.

  • Если вы выполняете несколько повторяющихся задач, например, загружаете несколько изображений, которые должны отображаться в ImageViews (например, загружаете миниатюры) после загрузки, используйте очередь задач с Handler.

62
ответ дан 24 November 2019 в 00:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: