警报管理员不会取消

时间:2013-12-30 00:28:17

标签: android alarmmanager

我有三个警报管理器,可以在当天的不同时间创建三个警报。这些警报是主要活动的oncreate方法。我希望仅在应用程序第一次启动时设置这些警报。但是因为它们是主要活动的oncreate方法。每次重新创建主要活动时都会重新创建它们。我该如何解决这个问题?此外,即使我的主要活动未激活或未成为焦点,我也希望设置警报。

此外,我希望每个警报在特定时间窗口内的不同时间每天重复。 setRepeatingAlarm方法没有给我这种灵活性。关于如何实现这一目标的任何想法?

Intent intent1 = new Intent(this, ReminderAlarmReceiver.class);
intent1.putExtra("alarm_message", "Alarm!");
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 1, intent1,  PendingIntent.FLAG_NO_CREATE);

Intent intent2 = new Intent(this, ReminderAlarmReceiver.class);
intent2.putExtra("alarm_message", "Alarm!");
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(this, 2, intent2, PendingIntent.FLAG_NO_CREATE);

Intent intent3 = new Intent(this, EODAlarmReceiver.class);
intent3.putExtra("alarm_message", "Alarm!");    
PendingIntent pendingIntent3 = PendingIntent.getBroadcast(this, 3, intent3, 0);

// Get the AlarmManager service
AlarmManager alarmMgr1 = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmMgr1.set(AlarmManager.RTC_WAKEUP, cal0.getTimeInMillis(), pendingIntent);

AlarmManager alarmMgr2 = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmMgr2.set(AlarmManager.RTC_WAKEUP, cal2.getTimeInMillis(), pendingIntent2);        

AlarmManager alarmMgr3 = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmMgr3.set(AlarmManager.RTC_WAKEUP, cal4.getTimeInMillis(), pendingIntent3);

1 个答案:

答案 0 :(得分:0)

您应该创建一个单独的类,而不是在活动中设置onCreate方法中的警报,而不是显示here。这也可以解决您的活动失焦时遇到的问题。

另外,对于设置重复警报,您应该能够使用AlarmManager的setRepeating()方法来执行此操作。 Reference