BREW3.1.5中,加强了Alarm的功能,主要是新增了IAlarmMgr接口,并新增了IShell_SuspendAlarm,IShell_ResumeAlarm接口函数。
典型的高级操作如下:
1. 使用IShell接口查询,Suspend,Resume Alarm:
a. 可以调用IShell_ActiveAlarm来查询是否有当前应用设置的处于Pending(Active)的Alarm
b. 可以调用IShell_SuspendAlarm,IShell_ResumeAlarm来延迟Alarm的响应。当调用IShell_SuspendAlarm后,任何到期的Alarm都会被BREW保存,不发送EVT_Alarm事件。直到调用IShell_ResumeAlarm后,所有因IShell_SuspendAlarm而延迟的Alarm会立即被投递到相关的目的应用。这使得应用可以控制是否被Alarm打断,比如Browser应用想在Download文件的过程中不被Alarm打断,则可以在开始下载文件操作前调用IShell_SuspendAlarm,完成下载操作后调用IShell_ResumeAlarm。
2. 使用IAlarmMgr接口:
a. IAlarmMgr接口提供了秒精度的Alarm,这使得实际的Alarm应用开发更加方便。
b. IAlarmMgr接口提供相对时间,绝对时间两种方式的Alarm设置,更加灵活。
c. IAlarmMgr接口提供预留UserCode的功能
d. IAlarmMgr接口也提供查询,Suspend,Resume的功能
3. Alarm的其他使用:
a. 可以向其他App投递Alarm,即设置Alarm时,CLSID为其他应用。该操作需要相应的权限。该方式可以作为一种应用间通信的方式。
b. 当注册的Alarm在关机时过期,下次开机后,BREW内核会立即将该过期的Alarm投递给相应的应用。
c. 如果手机支持关机闹铃,应用甚至可以利用设置关机后过期的闹铃而自动启动。