Introducing AlarmManager
In Chapter 2, Performing Work with Looper, Handler, and HandlerThread, we learned how to schedule work on a HandlerThread
using postDelayed
, postAtTime
, sendMessageDelayed
, and sendMessageAtTime
. These mechanisms are fine for short-term scheduling of work while our application is running in the foreground.
However, if we want to schedule an operation to run at some point in the distant future, we'll run into problems. First, our application may be terminated before that time arrives, removing any chance of the Handler running those scheduled operations. Second, the device may be asleep, and with its CPU powered down it cannot run our scheduled tasks.
Note
The solution to this is to use an alternative scheduling approach, one that is designed to overcome these problems: AlarmManager
.
android.app.AlarmManager
is a class that has been available in the Android SDK since the first version, delivering an advanced API to fire off Intents in the future at one specific time...