关于设置多个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新手!呵呵。。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值