Android 如何为预选的天数设置AlarmManager?

Android 如何为预选的天数设置AlarmManager?,android,widget,alarmmanager,alarm,Android,Widget,Alarmmanager,Alarm,我正在创建一个alarm小部件,它可以工作,但是,我目前只在一天内使用它,我想知道如何为预定义的天数定义它,比如说,我想为周一、周三和周五设置alarman,我如何才能做到这一点 Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, dPicker.getYear()); cal.set(Calendar.MONTH, dPicker.getMonth()); cal.set(Calendar

我正在创建一个alarm小部件,它可以工作,但是,我目前只在一天内使用它,我想知道如何为预定义的天数定义它,比如说,我想为周一、周三和周五设置alarman,我如何才能做到这一点

    Calendar cal = Calendar.getInstance();

    cal.set(Calendar.YEAR, dPicker.getYear());
    cal.set(Calendar.MONTH, dPicker.getMonth());
    cal.set(Calendar.HOUR_OF_DAY, tPicker.getCurrentHour());
    cal.set(Calendar.MINUTE, tPicker.getCurrentMinute());
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);   

    alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    alarmMgr.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), testThis(this));

我目前使用的是时间选择器和日期选择器,但我会将设计更改为每天使用复选框,但我不确定如何定义所选日期的报警,是否有帮助?非常感谢。

立即定义它们我不知道这是否可以实现,但我有另一个场景要使用。 假设您在星期一、星期二、星期四将报警器调整为火警。您将仅在周一调整AlarmManager,周一它将触发并检查下一个警报(将在周二),以此类推。将所有报警保存在数据库中,并逐个取出,然后在每次报警检查中检查下一个报警(如果存在)

您可以像这样使用api:

cal1.set(Calendar.DAY_OF_WEEK,2);  //monday
cal2.set(Calendar.DAY_OF_WEEK,4);  //wednesday
cal3.set(Calendar.DAY_OF_WEEK,6);  //friday
alarmMgr.set(AlarmManager.RTC_WAKEUP, cal1.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7, testThis(this));  // every monday
alarmMgr.set(AlarmManager.RTC_WAKEUP, cal2.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7, testThis(this));  // every wednesday
alarmMgr.set(AlarmManager.RTC_WAKEUP, cal3.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7, testThis(this));  // every friday
并按如下方式设置3个alarmMgr:

cal1.set(Calendar.DAY_OF_WEEK,2);  //monday
cal2.set(Calendar.DAY_OF_WEEK,4);  //wednesday
cal3.set(Calendar.DAY_OF_WEEK,6);  //friday
alarmMgr.set(AlarmManager.RTC_WAKEUP, cal1.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7, testThis(this));  // every monday
alarmMgr.set(AlarmManager.RTC_WAKEUP, cal2.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7, testThis(this));  // every wednesday
alarmMgr.set(AlarmManager.RTC_WAKEUP, cal3.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7, testThis(this));  // every friday

我可能会在for循环中尝试,具体取决于我的应用程序中标记了多少复选框;我有一个问题:当您关闭手机时,这些AlarmManager实例是否已“删除”?我是说,安装程序会被删除吗?谢谢在Android developer Api中,您可以阅读以下内容:注册的报警在设备处于睡眠状态时会被保留(如果在此期间报警关闭,可以选择唤醒设备),但如果关闭并重新启动,则会被清除。