We notice that AlarmManagerCompat
alone, isn't a reliable way to implement alarm/ reminder feature in our app, due to different AlarmManager
behaviour in different version of OS. (For instance, Doze mode)
Initially, we plan to use Evernote's android-job library, to help us implement alarm/ reminder feature in our app.
However, along the way, we also notice that Google just release WorkerManager
.
So far, WorkerManager
works well for us, when we run some one-time background jobs (Almost immediate, with internet connectivity constraint) after the app quit.
We have plan to use WorkerManager
to implement alarm/ reminder feature.
I was wondering, how reliable is WorkerManager
to implement such feature? Has anyone try it out? We are targeting API 15 and above.
WorkManager is not appropriate for anything that must fire at a specific time as jobs, including those used by WorkManager or android-job, will not fire while the device is dozing.
For exact timing, you should absolutely be using
AlarmManagerCompat
and specifically, setExactAndAllowWhileIdle() which fires an alarm at exactly the specified time on all API levels.As your exact timed alarm can and will happen while the device is dozing, your app should not require network connectivity to post your alarm/reminder notification. Ideally, the information should be in the
PendingIntent
itself and not even need any database fetch/etc.