有关Android闹钟的一个总结

    最近的项目中要用到闹钟,查阅了一下网上的方法,大致流程都是一样的。

//闹钟功能设定
AlarmManager aManager = (AlarmManager)getSystemService(Service.ALARM_SERVICE);
//定时要启动的intent
Intent intent = new Intent(AlertSettingActivity.this, AlarmActivity.class);
//定时事件,第二个参数注意
PendingIntent pi = PendingIntent.getActivity(AlertSettingActivity.this, 0, intent, 0);
	
// 设置AlarmManager将在Calendar对应的时间启动指定组件
aManager.set(AlarmManager.RTC_WAKEUP,mycalendar.getTimeInMillis(), pi);

    Android对于PendingIntent的识别主要在于其配置参数是否相同

PendingIntent getActivity (Context context, int requestCode, Intent intent, int flags);
PendingIntent getBroadcast (Context context, int requestCode, Intent intent, int flags);

    无论你使用getAcitivity还是getBroadcast,参数设定都是差不多的,但对于第二个参数requestCode,文档上的解释是Private request code for the sender (currently not used)。没用吗?我们也许可以考虑将之用上。

    Android系统对于PendingIntent的识别都是依赖于这几个参数是否相同。一般的Demo都将requestCode直接设置为0,这样带来的问题在于,当你要设定多个闹钟时,每次创建的PendingIntent都是一样的,这样可能导致很多难以定位的bug行为;而且,你需要取消某个PendingIntent,也难以定位。这时,只需要将requestCode设为你为每个闹钟定义的ID即可,每次定义的定时事件都不相同,想取消某个闹钟只要定义一个ID一致的PendingIntent,使用AlarmManager的cancel方法即可。


另外,pendingIntent的第四个参数也需要注意,需要及时更新时,就不要设为0,建议设置为FLAG_UPDATE_CURRENT

其二,弹出多个闹钟实例时,在定义intent时,注意添加flag,即

intent.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值