Scheduling alarms with AlarmManager
In Chapter 3, Distributing Work with Handler and HandlerThread, we learned to schedule work on a HandlerThread
using postDelayed
, postAtTime
, sendMessageDelayed
, and sendMessageAtTime
. These mechanisms are fine for short-term scheduling of work that should happen soon—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.
The solution to this is to use an alternative scheduling approach—one that is designed to overcome these problems: AlarmManager
.
AlarmManager
is a system service that provides scheduling capabilities far beyond those of Handler
. Being a system service, AlarmManager
cannot be terminated and has...