如何设置不同时间的多个AlarmManager

How to set multi AlarmManager with different time

大家好,我正在尝试设置不同时间的多个 AlarmManager,并使用此代码

public void StartAppNotifications( String title ,int h ,int m ) {

        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, h);
        calendar.set(Calendar.MINUTE, m);
        calendar.set(Calendar.SECOND, 0);


        if (!calendar.before(Calendar.getInstance())) {

            Intent intent = new Intent(getApplicationContext(), AlertReceiver.class);
            intent.putExtra("title", title);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);

        }

    }

如果这个方法被调用一次就有效,但是如果调用多次就无效 我试着这样称呼它

StartAppNotifications("alarm text" ,18 ,30);

从关于 AlarmManager 的 doc 中,当您设置第二个使用相同挂起意图的警报时,它会替换原始警报

因此,您需要为每个重复警报使用不同的 PendingIntent,例如使用标志 PendingIntent.FLAG_ONE_SHOT 来创建您的 PendingIntent

PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_ONE_SHOT);