关于设置多个alarm闹钟

Liuser 2011-06-14

这两天一直在处理一个问题。。。他环绕我两天了。介于此有必要给予一记!好了,先说说遇

到我的问题。正如标题所说,给一个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(Retrievea

PendingIntentthatwillperformabroadcast,likecalling

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(publicstaticfinalCreator<PendingIntent>)来说这行不

通,因为PendingIntent不是new的而是通过一个静态的方法产生的。。那PendingIntent

就依赖于Intent和requestCode了。。requestCodePrivaterequestcode

forthesender(currentlynotused).这是androidAPI中说的。requestCode

是一个私有的请求码。。。。这就是这个!最后一个int参数就是设置这些值

MaybeFLAG_ONE_SHOT,FLAG_NO_CREATE,FLAG_CANCEL_CURRENT,FLAG_UPDATE_CURRENT,oranyoftheflagsassupportedbyIntent.fillIn()tocontrolwhichunspecifiedpartsoftheintentthatcanbesuppliedwhentheactualsendhappens

用用他们来控制那些intent可以用来发送数据。。。。。

看到这里再理解这段代码就没有什么难处了!这里我要谢谢我的同事的提醒。。因为我也是

android新手!呵呵。。。。

相关推荐