Прослушайте приложение, чтобы разбудить событие / запланировать разбудить событие

Я пытаюсь запланировать событие. Например, я бы хотел, чтобы что-то произошло через час. Для этого я использовал обработчик postdelayed. К сожалению, это не работает, как ожидалось. Я предполагаю, что причина в том, что android переводит мое приложение в какое-то состояние сна, поэтому в какой-то момент таймер останавливается и продолжает отсчет с остановленной точки, когда устройство снова начинает работать. Это приводит к тому, что событие происходит в неизвестное время, превышающее ожидаемое время.

Теперь у меня есть два способа решить эту проблему, и я хотел бы знать, как реализовать каждый из них:

  1. Запланируйте, чтобы разбудить устройство в определенное время, а затем исключить событие. Я не знаю, как запланировать пробуждение (и делаю это эффективно).
  2. Исключите событие, как только мое приложение проснется, если время выполнения прошло (я могу использовать дату и время, чтобы проверить, прошло ли время). Что мне здесь не хватает, так это слушать, как просыпается событие.

И для моего общего знания о политике сна андроида: андроид помещает сервисы и действия, чтобы спать автоматически? как, если так, любое приложение обмена сообщениями продолжает слушать новые сообщения?

Заранее благодарю за любую помощь:)

1 ответ

Вы должны использовать сигналы тревоги. Сигналы тревоги дают вам возможность выполнять основанные на времени операции вне времени жизни вашего приложения.

Android имеет 4 типа будильников:

  1. ELAPSED_REALTIME — Пожары: ожидаемое намерение, основанное на количестве времени, прошедшего с момента загрузки устройства, но оно не активируется. Истекшее время включает любое время, в течение которого устройство спало.
  2. ELAPSED_REALTIME_WAKEUP - пробуждает устройство и запускает ожидающее намерение по истечении заданного промежутка времени с момента загрузки устройства.
  3. RTC - срабатывает: ожидающее намерение в указанное время, но устройство не активируется.
  4. RTC_WAKEUP - пробуждает устройство, чтобы запустить ожидающее намерение в указанное время.

Прочитайте эту страницу

Другие вопросы по тегам