Является ли WorkerManager надежным способом реализации функции будильника / напоминания в приложении?

Мы замечаем, что AlarmManagerCompat не является надежным способом реализации функции будильника / напоминания в нашем приложении из-за различных AlarmManager поведение в разных версиях ОС. (Например, режим Doze)

Первоначально мы планируем использовать библиотеку Evernote android-job, чтобы помочь нам реализовать функцию будильника / напоминания в нашем приложении.

Однако, по пути, мы также заметили, что Google просто выпустит WorkerManager,

До сих пор, WorkerManager хорошо работает для нас, когда мы запускаем одноразовые фоновые задания (почти сразу, с ограничением интернет-соединения) после выхода из приложения.

Мы планируем использовать WorkerManager реализовать функцию будильника / напоминания.

Мне было интересно, насколько надежно WorkerManager реализовать такую ​​функцию? Кто-нибудь пробовал? Мы нацелены на API 15 и выше.

1 ответ

Решение

WorkManager не подходит для всего, что должно запускаться в определенное время, так как задания, в том числе используемые WorkManager или android-job, не будут срабатывать, пока устройство дремлет.

Для точного времени, вы должны обязательно использовать AlarmManagerCompat и, в частности, setExactAndAllowWhileIdle (), который выдает сигнал тревоги точно в указанное время на всех уровнях API.

Так как ваш точный таймер тревоги может и будет происходить, когда устройство дремлет, ваше приложение не должно требовать подключения к сети для публикации вашего уведомления о тревоге / напоминании. В идеале информация должна быть в PendingIntent сам по себе и даже не нужно никакой выборки из базы данных / и т.д.

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