Прослушайте приложение, чтобы разбудить событие / запланировать разбудить событие
Я пытаюсь запланировать событие. Например, я бы хотел, чтобы что-то произошло через час. Для этого я использовал обработчик postdelayed. К сожалению, это не работает, как ожидалось. Я предполагаю, что причина в том, что android переводит мое приложение в какое-то состояние сна, поэтому в какой-то момент таймер останавливается и продолжает отсчет с остановленной точки, когда устройство снова начинает работать. Это приводит к тому, что событие происходит в неизвестное время, превышающее ожидаемое время.
Теперь у меня есть два способа решить эту проблему, и я хотел бы знать, как реализовать каждый из них:
- Запланируйте, чтобы разбудить устройство в определенное время, а затем исключить событие. Я не знаю, как запланировать пробуждение (и делаю это эффективно).
- Исключите событие, как только мое приложение проснется, если время выполнения прошло (я могу использовать дату и время, чтобы проверить, прошло ли время). Что мне здесь не хватает, так это слушать, как просыпается событие.
И для моего общего знания о политике сна андроида: андроид помещает сервисы и действия, чтобы спать автоматически? как, если так, любое приложение обмена сообщениями продолжает слушать новые сообщения?
Заранее благодарю за любую помощь:)
1 ответ
Вы должны использовать сигналы тревоги. Сигналы тревоги дают вам возможность выполнять основанные на времени операции вне времени жизни вашего приложения.
Android имеет 4 типа будильников:
- ELAPSED_REALTIME — Пожары: ожидаемое намерение, основанное на количестве времени, прошедшего с момента загрузки устройства, но оно не активируется. Истекшее время включает любое время, в течение которого устройство спало.
- ELAPSED_REALTIME_WAKEUP - пробуждает устройство и запускает ожидающее намерение по истечении заданного промежутка времени с момента загрузки устройства.
- RTC - срабатывает: ожидающее намерение в указанное время, но устройство не активируется.
- RTC_WAKEUP - пробуждает устройство, чтобы запустить ожидающее намерение в указанное время.
Прочитайте эту страницу