关于设置多个alarm闹钟这两天一直在处理一个问题。。。他环绕我两天了。介于此有必要给予一记!好了,先说说遇到
关于设置多个alarm闹钟
这两天一直在处理一个问题。。。他环绕我两天了。介于此有必要给予一记!好了,先说说遇
到我的问题。正如标题所说,给一个alarm设置多个闹钟。。。我遇到的问题思想与这个很类似,听我慢慢说来!(如果你是大牛,那就算了省得浪费你的时间,我只是再为那些遇到问题的新手做一个指引!大牛就路过吧~~~~)。
我们知道设置alarm要设置alarm中的pendingintent,因为alarm对象是系统中的同一个对象,但是系统是怎么区别alarm呢?
贴出伪代码:
Intent intent = new Intent();PendingIntent pendingIntent = PendingIntent.getBroadCast(Context,requestCode,Intent,Flags);AlarmManager alarm = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);alarm.set(AlarmManager.RTC,longTime,PendingIntent);
可以看到上面的代码,观察一下,pendingintent 依赖于intent。。。我们可以在
PendingIntent中 定义我们所关注的事件 ,如果你想关注一个acitivty 。。那么 你就
可以 通过 pendingIntent的getActivity方法来做 。。。那么这样设置的alarm就是启
动一个activity了。。。来看看 pendingIntent.getBroadCast(Retrieve a
PendingIntent that will perform a broadcast, like calling
Context.sendBroadcast() androidAPI
里面说 检索一个PendingIntent,将执行一个广播 类似于) Context.sendBroadcast
())中的参数(或者说 getActivity(Context, int, Intent, int), getBroadcast
(Context, int, Intent, int), getService(Context, int, Intent,
int); ),第一个参数就不说了。。那么第二个。是干什么的的??requestCode。。。。
可以看到这个参数需要设置成整型。。这个参数对于当前的需求来说相当的重要,因为这就是
用来区别不同的alarm的。。呵呵。。也许你会想alarm依赖于 pendingintent 。。只要
pendingintent不是 同一个对象就可以了,是的,你的想法是正确的。。。但是怎么区别两
个或者多个PendingIntent是不是同一个对象呢?一般的对象我们new 一个就可以了,但是
对于PendingIntent(public static final Creator<PendingIntent>)来说这行不
通,因为PendingIntent不是new的而是通过一个静态的方法产生的。。那PendingIntent
就依赖于Intent和 requestCode 了。。requestCode Private request code
for the sender (currently not used). 这是androidAPI中 说的。requestCode
是一个私有的请求码。。。。这就是这个!最后一个int 参数 就是设置这些值
May be FLAG_ONE_SHOT, FLAG_NO_CREATE, FLAG_CANCEL_CURRENT, FLAG_UPDATE_CURRENT, or any of the flags as supported by Intent.fillIn() to control which unspecified parts of the intent that can be supplied when the actual send happens
用用他们来控制那些intent 可以用来发送 数据。。。。。
看到这里再理解这段代码就没有什么难处了!这里我要谢谢我的同事的提醒。。因为我也是
android新手!呵呵。。。。 1 楼 tdounnyy 2011-11-22 我也碰到multiple pendingintent的问题
thx 楼主 2 楼 whao189 2011-11-23 tdounnyy 写道我也碰到multiple pendingintent的问题
thx 楼主
..共同学习!!!