Действие расписания Android

Чтобы сделать какое-то действие в течение некоторого времени, я обнаружил, что существует несколько вариантов:

  • использовать AlarmManager
  • использовать ScheduledExecutorService
  • использовать метод обработчика postDelayed

Что такое большая разница во всем этом? Какова наилучшая практика создания расписания?

Ответы

Ответ 1

  • AlarmManager - глобальный "Таймер", этот человек может разбудить ваше приложение, даже если оно не было запущено. Тяжелый парень.
  • ScheduledExecutorService: стандартный Java-способ делать некоторые запланированные материалы, используемые в JSE, простые и знакомые для разработчиков Java. Задача будет выполнена в другом потоке, чем в пользовательском интерфейсе или потоке, которые планируют это задание. Хорошо подходит для сервисов, чтобы не работать с пользовательским интерфейсом, а также для длительного и тяжелого использования.
  • Handler: способ Google планировать задание, задание выполняется в потоке пользовательского интерфейса (если обработчик был создан в пользовательском интерфейсе), поэтому он не может быть очень тяжелым, или он просто заморозит ваш пользовательский интерфейс.

Ответ 2

AlarmManager не зависит от вашего приложения и гарантирует выполнение задачи.
Остальные два выполняются как часть Activity/Service с соответствующими ограничениями жизненного цикла (например, могут быть убиты в любое время).