如何设置不同时间的多个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);
大家好,我正在尝试设置不同时间的多个 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);