Helper for the common pattern of implementing a {@link BroadcastReceiver}
that receives a device wakeup event and then passes the work off
to a {@link android.app.Service}, while ensuring that the
device does not go back to sleep during the transition.
This class takes care of creating and managing a partial wake lock
for you; you must request the {@link android.Manifest.permission#WAKE_LOCK}
permission to use it.
Example
A {@link WakefulBroadcastReceiver} uses the method
{@link WakefulBroadcastReceiver#startWakefulService startWakefulService()}
to start the service that does the work. This method is comparable to
{@link android.content.Context#startService startService()}, except that
the {@link WakefulBroadcastReceiver} is holding a wake lock when the service
starts. The intent that is passed with
{@link WakefulBroadcastReceiver#startWakefulService startWakefulService()}
holds an extra identifying the wake lock.
{@sample development/samples/Support4Demos/src/com/example/android/supportv4/content/SimpleWakefulReceiver.java complete}
The service (in this example, an {@link android.app.IntentService}) does
some work. When it is finished, it releases the wake lock by calling
{@link WakefulBroadcastReceiver#completeWakefulIntent
completeWakefulIntent(intent)}. The intent it passes as a parameter
is the same intent that the {@link WakefulBroadcastReceiver} originally
passed in.
{@sample development/samples/Support4Demos/src/com/example/android/supportv4/content/SimpleWakefulService.java complete} |