Java 使用请求代码设置多个报警

Java 使用请求代码设置多个报警,java,android,alarmmanager,Java,Android,Alarmmanager,我想使用请求代码设置多个警报。 我为每个警报提供不同的请求代码值,但alarmManager仍然只执行最后一组警报。 以下是我现有的代码: public void Alarm(){ Intent intent = new Intent(MainActivity.this, BroadCast.class); alarmID = (int)(System.currentTimeMillis() % 1000000000); //for request code

我想使用请求代码设置多个警报。 我为每个警报提供不同的请求代码值,但alarmManager仍然只执行最后一组警报。 以下是我现有的代码:

public void Alarm(){
        Intent intent = new Intent(MainActivity.this, BroadCast.class);
        alarmID = (int)(System.currentTimeMillis() % 1000000000); //for request code

        PendingIntent sender = PendingIntent.getBroadcast(
            MainActivity.this, alarmID, intent, 0);

        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
                     calendar.get(Calendar.DATE),hours,mins,0);
        AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

        am.setInexactRepeating(AlarmManager.RTC_WAKEUP, 
                               calendar.getTimeInMillis(),am.INTERVAL_DAY, sender);
    }

尝试setRepeating而不是setInexactRepeating,您将收到重复报警

am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
                + (5 * 1000),5 * 1000, pendingIntent);
从Android 5.1(API版本22)开始,重复报警的时间至少为1分钟。如果您需要在一分钟内完成工作,只需直接设置警报,然后从该警报的处理程序中设置下一个警报,等等。如果您需要在5秒内完成工作(例如),请将其发送到处理程序,而不是使用AlarmManager

这里的文档很好:


您能检查一下您的报警id吗?可以。我用烤面包来检查。它们有不同的值。为了清楚起见,处理程序要求应用程序处于活动状态,而报警管理器则不要求。因此,设计必须考虑到这一点。