2014-09-02 2 views
1

Зачем использовать Looper/Handler, когда я могу использовать метод (-ы) Executor?Looper/Handler vs. Executor

Дуэт Looper/Handler кажется довольно неуклюжим и, похоже, не делает многое, что позволяет обеспечить очередь очередей и, по-видимому, имеет меньшую гибкость.

Каково было обоснование конструкции петлителя?

Спасибо.

+1

'Looper' и' Handler' в основном присутствуют в поддержке основной прикладной нити. Вы можете использовать их для других потоков, и иногда это будет причиной для этого (см. «LocationManager»). Однако, использовав «HandlerThread» раньше, «ThreadPoolExecutor» был бы моим выбором для фоновой работы. – CommonsWare

ответ

1

Сам петлитель не имеет большого преимущества перед исполнителем. Это то, как Android управляет работником. Но вы можете получить основной поток вашего приложения с Looper.getMainLooper(), это может иметь следующие преимущества:

  • Вы можете изменить пользовательский интерфейс с MainLooper, но и это не вычислить интенсивное фоновое задание, так как вы бы заморозить ui.
  • Выполнение Runnables «in-sync» со всеми другими нативными задачами. Это означает, что вы публикуете свой Runnable в той же очереди, что и у андроида
  • Не нужно создавать темы самостоятельно. Вы можете использовать уже запущенный Looper.
Смежные вопросы