Android ApiDemos示例解析(19):App->Alarm->Alarm Controller
Alarm Controller演示如何在Android应用中使用Alarm事件,其功能和java.util.Timer ,TimerTask类似。但Alarm可以即使当前应用退出后也可以做到Schedule一个任务在指定的时刻执行。
AlarmManager 用于管理Alarm事件,支持单次执行或重复执行。 和大都数Android服务一样,AlarmManager也是通过getSystemService来获取服务对象:
与TimerTask对应的任务描述类型为PendingIntent,PendingIntent描述了将要执行的Intent,PendingIntent没有提供构造函数,需要通过static 函数getActivity(Context, int, Intent, int), getBroadcast(Context, int, Intent, int), getService(Context, int, Intent, int) 来或得想要执行的Activity,Broadcast,Service描述。
本例中是取得对Broadcast OneShotAlarm 和RepeatingAlarm的描述,分别对应于单次执行时执行的Broadcast事件和多次执行时Broadcast事件,它们在AndroidManifest.xml定义为Broadcast Receiver:
<receiver android:name=”.app.OneShotAlarm” android:process=”:remote” />
<receiver android:name=”.app.RepeatingAlarm” android:process=”:remote” />
Schedule单次Alarm事件代码如下:
其中sender为对发给Broadcast Receiver OneShotAlarm的Intent的描述,当到达指定的时间(例子中为30秒),AlarmManager将给OneShotAlarm发出一个Broadcast Intent,OneShotAlarm接到后,将使用Toast在屏幕上显示一个消息。 如果你多次点击“One Shot Alarm”并不会Schedule多个Alarm事件,这是因为Schedule同一个Sender对象,后一次将取消上此Scheduled的事件。
Schedule一个重复事件代码如下:
上述代码每15秒给RepeatingAlarm 发出一个Broadcast事件,RepeatingAlarm接受到后,也在屏幕上显示一个消息。
对于与Schedule的事件,单次或多次的,都可以调用AlarmManager 的cancel方法取消Schedule的Alarm事件,下面代码取消多次Alarm事件。
注:如果你没有Cancel这个多次Alarm事件,每隔15秒屏幕上都会显示一个消息,即使你退出这个例子或是启动其它应用,直到Reboot之后才中止。
上一篇: 修改数据库字段类型
下一篇: qTip2 Position
推荐阅读
-
Android ApiDemos示例解析(19):App->Alarm->Alarm Controller
-
Android ApiDemos示例解析(19):App->Alarm->Alarm Controller
-
Android ApiDemos示例解析(20):App->Alarm->Alarm Service
-
Android ApiDemos示例解析(21):App->Device Admin
-
Android ApiDemos示例解析(21):App->Device Admin
-
Android ApiDemos示例解析(26):App->Notification->IncomingMessage
-
Android ApiDemos示例解析(12):App->Activity->Redirection
-
Android ApiDemos示例解析(15):App->Activity->SetWallpaper
-
Android ApiDemos示例解析(10):App->Activity->QuickContactsDemo
-
Android ApiDemos示例解析(6):App->Activity->Dialog