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().