Гиды

Что такое Android Looper?

Android Looper - это класс Java в пользовательском интерфейсе Android, который вместе с классом Handler обрабатывает события пользовательского интерфейса, такие как нажатие кнопок, перерисовка экрана и переключение ориентации. Их также можно использовать для загрузки контента в службу HTTP, изменения размера изображений и выполнения удаленных запросов. Ключевая способность этих классов - возможность реализовать шаблон параллелизма.

Цель

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

Android Looper

Класс Android Looper содержит MessageQueue и связан только с тем потоком, из которого он был создан. Обратите внимание, что это соединение не может быть разорвано и что Looper не может быть прикреплен к любому другому потоку. Кроме того, Looper находится в локальном хранилище и может быть вызван только из статического метода. Метод подготовки проверяет, связан ли уже Looper с потоком, а затем статический метод создает Looper. После этого можно использовать цикл для проверки сообщений в очереди.

Обработчик Android

Класс Android Handler отвечает за добавление, удаление и обновление сообщений в конкретном MessageQueue. Обработчики прикреплены к Loopers и связанным с ними потокам, но несколько обработчиков могут быть прикреплены к одному потоку. Каждый раз, когда методы передаются обработчику, в MessageQueue появляется новое сообщение. Целевое поле сообщения настроено на экземпляр Handler, поэтому, когда Looper обрабатывает сообщение, он направляет сообщение прямо обратно в Handler, тем самым позволяя обработать событие в соответствующем потоке.

Дополнительная информация

Android Looper содержит 11 методов, включая void, getMainLooper, getThread, loop, myLooper, myQueue, prepare, prepareMainLooper, quit, setMessageLogging и toString. Преимущество использования классов Android Looper и Android Handler заключается в том, что они не позволяют разработчикам блокировать доступ к компонентам пользовательского интерфейса из-за беспокойства о параллельном доступе, т.е. когда пользователь нажимает кнопку во время обновления.

$config[zx-auto] not found$config[zx-overlay] not found