这几天因为案子需要,研究了一下alarm的设定和取消。
众所周知,设定alarm的话,大概需要用到如下几步:
1.创建一个Intent
2.创建一个PendingIntent
3.得到ALARM_SERVICE的AlarmManager
4.使用AlarmManager的set api,假如是取消,那就使用cancel
android自带的AP对于Alarm的管理是很巧妙的,例如Calendar,它基本上只会给系统设定一个alarm,等这个alarm结束之后,再设定下一个,这种模式很安全,也很有效,我认为这是一个值得学习的模式。
我之前一直有个疑问,设定的alarm,取消时,究竟要传怎样的PendingIntent系统才能知道我要取消的是哪一个
后来经过实验,我发现大概有这样几个参数会起决定作用,在我上面讲的四个步骤的第一步,Intent 的setData,setClass均能区别出,但是
putExtra却是没有用的。另外在PendingIntent.getBroadcast的第二个参数requestCode,查api,Google说这个参数没用的,但是其实它也是可以区别出不同的alarm。
上代码: