Является ли WorkerManager надежным способом реализации функции будильника / напоминания в приложении?
Мы замечаем, что AlarmManagerCompat
не является надежным способом реализации функции будильника / напоминания в нашем приложении из-за различных AlarmManager
поведение в разных версиях ОС. (Например, режим Doze)
Первоначально мы планируем использовать библиотеку Evernote android-job, чтобы помочь нам реализовать функцию будильника / напоминания в нашем приложении.
Однако, по пути, мы также заметили, что Google просто выпустит WorkerManager
,
До сих пор, WorkerManager
хорошо работает для нас, когда мы запускаем одноразовые фоновые задания (почти сразу, с ограничением интернет-соединения) после выхода из приложения.
Мы планируем использовать WorkerManager
реализовать функцию будильника / напоминания.
Мне было интересно, насколько надежно WorkerManager
реализовать такую функцию? Кто-нибудь пробовал? Мы нацелены на API 15 и выше.
1 ответ
WorkManager не подходит для всего, что должно запускаться в определенное время, так как задания, в том числе используемые WorkManager или android-job, не будут срабатывать, пока устройство дремлет.
Для точного времени, вы должны обязательно использовать AlarmManagerCompat
и, в частности, setExactAndAllowWhileIdle (), который выдает сигнал тревоги точно в указанное время на всех уровнях API.
Так как ваш точный таймер тревоги может и будет происходить, когда устройство дремлет, ваше приложение не должно требовать подключения к сети для публикации вашего уведомления о тревоге / напоминании. В идеале информация должна быть в PendingIntent
сам по себе и даже не нужно никакой выборки из базы данных / и т.д.