Chapter 29 Broadcast Intents
Next, update PollService.setServiceAlarm(...) to write to shared preferences when the alarm is set.
Listing 29.4 Writing alarm status preference when alarm is set
(PollService.java)
public class PollService extends IntentService {
...
public static void setServiceAlarm(Context context, boolean isOn) {
...
if (isOn) {
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime(), POLL_INTERVAL_MS, pi);
} else {
alarmManager.cancel(pi);
pi.cancel();
}
QueryPreferences.setAlarmOn(context, isOn);
}
...
}
Then your StartupReceiver can use it to turn the alarm on at boot.
Listing 29.5 Starting alarm on boot (StartupReceiver.java)
public class StartupReceiver extends BroadcastReceiver{
private static final String TAG = "StartupReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "Received broadcast intent: " + intent.getAction());
boolean isOn = QueryPreferences.isAlarmOn(context);
PollService.setServiceAlarm(context, isOn);
}
}
Run PhotoGallery again. (You may want to change PollService.POLL_INTERVAL_MS back to a shorter
interval, such as 60 seconds, for testing purposes.) Turn polling on by pressing START POLLING in the
toolbar. Reboot your device. This time, background polling should be restarted after you reboot your
phone, tablet, or emulator.