如何从设置页面暂停/禁用然后取消暂停/重新启用AlarmManager?

时间:2014-04-21 15:38:29

标签: android alarmmanager

在我的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);
}

1 个答案:

答案 0 :(得分:0)

您有两种选择:

  1. 最好的方法是cancel() turnOffAllAlarms()中所有未完成的事件,然后在turnOnAllAlarms()重新建立。 turnOnAllAlarms()部分应该不难,因为无论如何你需要代码来处理重启,“强制停止”等等。

  2. AlarmReceiver检查警报是否已关闭(例如,通过SharedPreference),如果确实关闭则跳过正常工作。这样效率较低,因为您仍然会在这些时间点唤醒设备。但是,代码可能更少。

相关问题