2或3天后不会触发每日警报

时间:2016-05-10 15:06:08

标签: android alarmmanager android-alarms

我想在我的应用程序中触发每日闹钟。我可以看到警报每天在正确的时间触发2或3天,但之后不会触发。例如,如果我将警报设置为在上午08:00触发,它将在每天上午8点触发2或3天,之后不会触发警报。没有应用程序崩溃或任何东西,它只是不会触发。我有一个BroadcastReceiver注册(AndroidManifest.xml)这个警报,我可以看到每天在正确的时间打印日志,但只有2或3天。之后没有任何活动,应用程序似乎就会消失。

请在下面找到我的代码:

final AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
final long intervalDay = 60*60*24*1000L;
final long alarmTime = calendar.getTimeInMillis();
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarmTime, intervalDay, pendingIntent);

我也使用了alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarmTime, AlarmManager.INTERVAL_DAY, pendingIntent);,但它没有任何区别(虽然没想到它会产生任何影响)。

我不想使用alarmManager.setInexactRepeating(),因为它不会在确切的时间触发警报,但会有轻微的延迟。

任何帮助表示赞赏!!

感谢。

1 个答案:

答案 0 :(得分:0)

那是因为android无法保存警报内容超过2-3天。虽然我知道没有确定的射击解决方案。

我通过在每次触发警报时取消和重置警报来修复它。 像这样的东西。 而不是使用setRepeat使用set或setExact来触发一次:

if(android.os.Build.VERSION.SDK_INT<Build.VERSION_CODES.KITKAT) {
    alarmManager.set(AlarmManager.RTC_WAKEUP, alarmtime, pendingIntent);
} else {
    alarmManager.setExact(AlarmManager.RTC_WAKEUP, alarmtime, pendingIntent);
}

然后在执行任务后onRecieve()的{​​{1}}方法中,重新启动闹钟,然后取消所有待处理的意图:

alarmReciever

希望它有所帮助。