在我的AlarmManagerUtils.java页面中,我使用此方法创建多个单一警报:
public static void createSingleAlarm(Context thisContext, int intDiaryEntryID, long lngAlarmTime){
AlarmManager am = (AlarmManager)thisContext.getSystemService(Context.ALARM_SERVICE);
Intent thisIntent = new Intent(thisContext, AlarmReceiver.class);
thisIntent.setAction("StartSingleAlarm");
thisIntent.putExtra("DiaryEntryID", intDiaryEntryID);
PendingIntent thisPendingIntent = PendingIntent.getBroadcast(thisContext, intDiaryEntryID, thisIntent, 0);
am.set(AlarmManager.RTC_WAKEUP, lngAlarmTime, thisPendingIntent);
}
所以我有一堆不同的日子和时间。我想要做的是允许用户从首选项页面关闭和打开警报。有没有办法做到这一点?我想做这样的事情:
public static void turnOffAllAlarms(Context thisContext){
AlarmManager am = (AlarmManager)thisContext.getSystemService(Context.ALARM_SERVICE);
am.disable(thisContext);
}
和此:
public static void turnOnAllAlarms(Context thisContext){
AlarmManager am = (AlarmManager)thisContext.getSystemService(Context.ALARM_SERVICE);
am.enable(thisContext);
}
答案 0 :(得分:0)
您有两种选择:
最好的方法是cancel()
turnOffAllAlarms()
中所有未完成的事件,然后在turnOnAllAlarms()
重新建立。 turnOnAllAlarms()
部分应该不难,因为无论如何你需要代码来处理重启,“强制停止”等等。
让AlarmReceiver
检查警报是否已关闭(例如,通过SharedPreference
),如果确实关闭则跳过正常工作。这样效率较低,因为您仍然会在这些时间点唤醒设备。但是,代码可能更少。