Android Looper vs BlockingQueue? - PullRequest
       22

Android Looper vs BlockingQueue?

10 голосов
/ 09 декабря 2011

Может кто-нибудь объяснить, почему кто-то должен использовать функцию Android Looper для создания «конвейерного потока» вместо создания обычного потока, который извлекает задачи из BlockingQueue? На первый взгляд кажется, что есть два способа сделать то же самое.

1 Ответ

4 голосов
/ 14 февраля 2013

BlockingQueue позволяет иметь несколько потребителей и производителей, тогда как механизм Looper позволяет иметь несколько производителей, но только одного потребителя.

Таким образом, в потоке Looper вы одновременно выполняете только одну задачу (выполняется).Механизм зацикливания был создан, чтобы вы могли легко выполнять исполняемые объекты (задачи, инкапсулированные в сообщения) в потоке пользовательского интерфейса (который выполняется как один поток, так что воспринимайте его как однопоточный потребитель)

Looper / Handler также обеспечивает функциональностьдля отложенного выполнения задач, которые BlockingQueue из коробки не делает.Опять же, это важно в контексте инструментария пользовательского интерфейса.

...