我创建了一个事件应用程序,可以接受个人和重复的警报。如果应用程序在闹钟响起时处于活动状态,则会出现故障,而不是一个,但是两个警报将发出警报(指示"重叠"警报音乐偏移约1秒钟)
然而,如果应用程序被杀死,即。仅限onDestroy(),将只有一个警报
是否有人熟悉此问题?
(我会发布代码,但它似乎是警报系统的逻辑缺陷......)
警报的安排:
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, myIntent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
// Testing adding the alarm date to this
Calendar alarmSchedule = Calendar.getInstance();
// Setting the time:
alarmSchedule.set(Calendar.HOUR, getAlarmTime().get(Calendar.HOUR));
alarmSchedule.set(Calendar.MINUTE, getAlarmTime().get(Calendar.MINUTE));
alarmSchedule.set(Calendar.SECOND, 0);
alarmSchedule.set(Calendar.YEAR, alarmDate.get(Calendar.YEAR));
alarmSchedule.set(Calendar.MONTH, alarmDate.get(Calendar.MONTH));
alarmSchedule.set(Calendar.DAY_OF_MONTH, alarmDate.get(Calendar.DAY_OF_MONTH));
alarmManager.set(AlarmManager.RTC_WAKEUP, alarmSchedule.getTimeInMillis(), pendingIntent);
答案 0 :(得分:0)
两个月前我遇到了这个问题,与
相同两个警报将发出警报(指示警报音乐“重叠”偏移大约1秒钟)
闹钟开始时间导致问题
am.set(type, triggerAtMillis, operation);
am.setRepeating(type, triggerAtMillis, intervalMillis, operation)
如果类型是RTC或RTC_WAKEUP,则triggerAtMillis应为System.currentTimeMillis()+ delay 如果类型为ELAPSED_REALTIME或ELAPSED_REALTIME_WAKEUP,则triggerAtMillis应为SystemClock.elapsedRealtime()+ delay