如何在android中每天设置三次警报?

如何在android中每天设置三次警报?,android,alarmmanager,android-alarms,Android,Alarmmanager,Android Alarms,我需要在每天早上9点、11点和下午1点设置闹钟 简单的解决方案是使用三个不同的挂起的意图,但是否有其他方法可以用一个挂起的意图实现相同的意图 提前谢谢 谢谢,找到了解决方案 只需要以相同的目的更改请求代码。它不会取消先前的报警。对于解决方案如果您在任何时候都需要安排的报警数量有限,可以为每个报警使用一个pendingent 但是,如果您有一个潜在的无限(或可能只是很多)数量的报警计划,我认为一个更好的方法可以是提供一个调度程序,可以对调度信息进行操作。例如,如果你需要创建一个日历之类的东西,你可

我需要在每天早上9点、11点和下午1点设置闹钟

简单的解决方案是使用三个不同的挂起的意图,但是否有其他方法可以用一个挂起的意图实现相同的意图


提前谢谢

谢谢,找到了解决方案


只需要以相同的目的更改请求代码。它不会取消先前的报警。对于解决方案

如果您在任何时候都需要安排的报警数量有限,可以为每个报警使用一个
pendingent

但是,如果您有一个潜在的无限(或可能只是很多)数量的报警计划,我认为一个更好的方法可以是提供一个调度程序,可以对调度信息进行操作。例如,如果你需要创建一个日历之类的东西,你可以每天设置一个或多个事件,你应该考虑这个方法。 你可以看看tha的报警部分

如您所见,有一个名为
AlarmScheduler
的类,其中有一个方法

void scheduleNextAlarm(Context context, AlarmManagerInterface alarmManager,
            int batchSize, long currentMillis)
确定需要计划的下一个报警

在特定的实现中,您可以看到该方法调用另一个方法:

queryUpcomingEvents()
它通过内容提供者()进行操作,并获取即将发生的事件

每次触发新警报时,您可以重新安排新警报,查看内容提供商(或存储计划信息的任何位置),或者应用不同的计划策略。例如,如果用户为日历上的某个事件创建了新的重新录制器,则需要重新安排警报(例如,您可以决定将所有警报安排在今天,或者只安排下一个警报)

在我的应用程序中,我通常使用以下代码(在
BroadcastReceiver
onReceive()
内,当警报触发时触发):

当然,我还有一个
BroadcastReceiver
,它等待该操作并尝试重新安排警报时间:

public class SchedulerReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context c, Intent intent) {
        if (intent.getAction().equals("it.gvillani.socialapp.alerts.SCHEDULE_REQUEST")) {
            startScheduler(c);
        }
    }

    private void startScheduler(Context c) {
        AlarmScheduler.clearAlarms(c);
        AlarmScheduler.scheduleNextAlarm(c);
    }
}

提示:ArrayList:)这完全取决于你的意思。如果你的意思是,你能用一个
set*()
调用
AlarmManager
,在不同的时间设置三个每日重复的报警吗?那么不行。感谢这两个,但是@Mike M,有没有办法用一个意图来做同样的事情呢?谢谢Mike,我得到了解决方案。我现在明白你的要求了。很高兴你弄明白了。干杯
public class SchedulerReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context c, Intent intent) {
        if (intent.getAction().equals("it.gvillani.socialapp.alerts.SCHEDULE_REQUEST")) {
            startScheduler(c);
        }
    }

    private void startScheduler(Context c) {
        AlarmScheduler.clearAlarms(c);
        AlarmScheduler.scheduleNextAlarm(c);
    }
}