为什么当app处于活动状态时,会创建两个警报...?

时间:2015-06-30 00:39:47

标签: android alarmmanager repeat

我创建了一个事件应用程序,可以接受个人和重复的警报。如果应用程序在闹钟响起时处于活动状态,则会出现故障,而不是一个,但是两个警报将发出警报(指示"重叠"警报音乐偏移约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);

1 个答案:

答案 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