AlarmManager计时器 [英] AlarmManager timer

查看:167
本文介绍了AlarmManager计时器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在期运用AlarmManager,我设置很多定时器,每一个定时器用于不同的广播接收器,
 他们会自动合并或不?

 意向意图=新意图(TimeModeService.this,TimeModeReceiver.class);
    intent.setAction(startTimeMode);
    的PendingIntent startIntent = PendingIntent.getBroadcast(getApplicationContext(),1000,意向,0);
    can.set(Calendar.HOUR_OF_DAY,startHour);
    can.set(Calendar.MINUTE,startMin);
    alarmmanager.setRepeating(AlarmManager.RTC_WAKEUP,can.getTimeInMillis(),(24 * 60 * 60 * 1000),startIntent);


解决方案

在,
PendingIntent.getBroadcast(getApplicationContext(),1000 / *这是要求code * /,意向,0);

如果你保持请求code同为的PendingIntent的不同实例,然后设置报警使用它们,他们应该合并,在android系统2.3.3,如果我保持相同(开始一个活动)只有一个活动的开始。在这里,我想提的是 alarmManager.set 使用不 alarmManager.setRepeating

我用INT 请求code =(INT)Calendar.getInstance()getTimeInMillis()。保持请求code代表不同pendingIntents不同。

但是,<一个href=\"http://developer.android.com/reference/android/app/PendingIntent.html#getBroadcast%28android.content.Context,%20int,%20android.content.Intent,%20int%29\"相对=nofollow>官方参考提到它作为

 请求code私人请求,code发件人(目前未使用)。

所以最好的方法是尝试为您的情况,但有相同的请求code不同PendingIntents将合并。

When useing AlarmManager ,i set many timers,each timer for different broadcast receiver, and they will auto merge or not?

    Intent intent = new Intent(TimeModeService.this,TimeModeReceiver.class);
    intent.setAction("startTimeMode");
    PendingIntent startIntent = PendingIntent.getBroadcast(getApplicationContext(),1000, intent,0);
    can.set(Calendar.HOUR_OF_DAY, startHour);
    can.set(Calendar.MINUTE,startMin);
    alarmmanager.setRepeating(AlarmManager.RTC_WAKEUP, can.getTimeInMillis(), (24 * 60 * 60 * 1000), startIntent);

解决方案

In, PendingIntent.getBroadcast(getApplicationContext(),1000 /*this is requestCode*/, intent,0); If you keep the requestCode same for different instances of PendingIntent, and then set alarm using them, they should merge, in android 2.3.3, if i keep it same (for starting an activity) only one activity started. Here i would mention that alarmManager.set was used not alarmManager.setRepeating.

I used int requestCode = (int)Calendar.getInstance().getTimeInMillis(); to keep the request code different for different pendingIntents.

But Official Reference mentions it as

requestCode     Private request code for the sender (currently not used).

So the best way is to try it for your situation, but different PendingIntents with same requestCode would merge.

这篇关于AlarmManager计时器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆