我有这个静态辅助功能,设定每日重复的报警:澄清对AlarmManager的行为
public static void setAlarm(Context context, int hh, int mm)
{
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hh);
calendar.set(Calendar.MINUTE, mm);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intentAlarm = new Intent(context, AlarmReciever.class);
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 0, intentAlarm, 0);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, alarmIntent);
}
我有三个地方,这个辅助函数被调用:
当设备启动时,我想重新注册闹钟:
@Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) { setAlarm(context, 7, 00); } }
在我的一项活动中,c所有这ActivityA:
AlarmReciever.setAlarm(ActivityA.this, 7, 00);
在另一个活动,称之为ActivityB:
AlarmReciever.setAlarm(ActivityB.this, 7, 00);
问题:
会发生什么,如果所有这三种setAlarm()被调用?我担心他们没有相同的背景。将Android知道他们是相同的
PendingIntent
,只有一次火灾?我希望它只在上午7点发射一次。如果我在ActivityA中按下setAlarm按钮几次,所以相同的警报设置具有相同的上下文和意图,如果上午7点到来,有多少人会触发?
说今天早上7点解雇了,现在是下午2点。我现在按下ActivityA中的按钮。警报会立即触发(测试),因为上午7点是“过去的时间”。但在添加新警报之前,系统不应该检查现有警报,并意识到这是一个重复的意图,并且已经在早上7点发射了一个。在我看来,它应该忽略我在下午2点要求的setAlarm()。