run()
. В Android главный (UI) поток не всегда занят выполнением какой-либо задачи и часто находится в ожидании действий пользователя или событий системы. Для реализации такого поведения в Android используются три сущности, которые работают вместе: Looper, MessageQueue и Handler.Looper
запускает цикл обработки сообщений, связанный с потоком. Поток работает, пока связанный с ним лупер не будет остановлен.Для создания лупера, вызывается статический метод
Looper.prepare()
. Созданный лупер будет связан с потоком, в котором вызван этот метод.Для старта лупера используется статический метод
Looper.loop()
. Между вызовами методов prepare()
и loop()
обычно создается Handler
, который будет обрабатывать сообщения, приходящие в MessageQueue
лупера.Для остановки лупера используется метод
quit()
или quitSafely()
. Разница между этими методами в том, что quit()
останавливает лупер незамедлительно, а quitSafely()
завершает обработку сообщений, которые уже добавлены в очередь.Эти методы не статические и вызываются на инстансе класса
Looper
. Получить лупер текущего потока можно статическим методом Looper.myLooper()
. Лупер UI потока можно получить методом Looper.getMainLooper()
.