Действие расписания Android
Чтобы сделать какое-то действие в течение некоторого времени, я обнаружил, что существует несколько вариантов:
- использовать AlarmManager
- использовать ScheduledExecutorService
- использовать метод обработчика postDelayed
Что такое большая разница во всем этом? Какова наилучшая практика создания расписания?
Ответы
Ответ 1
-
AlarmManager
- глобальный "Таймер", этот человек может разбудить ваше приложение, даже если оно не было запущено. Тяжелый парень.
-
ScheduledExecutorService
: стандартный Java-способ делать некоторые запланированные материалы, используемые в JSE, простые и знакомые для разработчиков Java. Задача будет выполнена в другом потоке, чем в пользовательском интерфейсе или потоке, которые планируют это задание. Хорошо подходит для сервисов, чтобы не работать с пользовательским интерфейсом, а также для длительного и тяжелого использования.
-
Handler
: способ Google планировать задание, задание выполняется в потоке пользовательского интерфейса (если обработчик был создан в пользовательском интерфейсе), поэтому он не может быть очень тяжелым, или он просто заморозит ваш пользовательский интерфейс.
Ответ 2
AlarmManager
не зависит от вашего приложения и гарантирует выполнение задачи.
Остальные два выполняются как часть Activity
/Service
с соответствующими ограничениями жизненного цикла (например, могут быть убиты в любое время).