我的应用程序有一个AlarmManager设置为每60秒触发一次。它会触发一个片段,检查当前时间并查看应用程序日历中是否有当前发生的事件。 它运行的很好,直到我发现它跳过其中一个事件。为了检查应用程序的完整性,我让片段将当前时间(分钟0-59)写入文本文件,并查看它是否跳过任何内容。仔细查看连续三天录制的文件后,我发现它确实存在。AlarmMamanger不准确
47,48,50,50,51,52,54,54,55,56,57,58,59,0,1,2,
这发生随机的任何地方。它发生在3-4小时后。下面是另一个示例
1,1,3,4,5,6,7,7,9,9,10,11,12,13,
的AlarmManager代码不具有任何问题似乎。尽管如果代码在给定时间过去之前跳过了一分钟或者触发,那么在某处出现了问题。 这里是我使用的AlarmManager
long alertTime = new GregorianCalendar().getTimeInMillis();
int timeInterval = 60*1000;
Intent alertIntent = new Intent(this, AlertRec.class);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alertTime, timeInterval, PendingIntent.getBroadcast(this, 1, alertIntent, PendingIntent.FLAG_UPDATE_CURRENT));
问题的代码: 1)为什么AlarmManager作用不规则? 2)如何避免这种情况?
我可以减少间隔时间来解决这个问题吗?我读了60是你需要申请的最小时间间隔。
** 1 ** - 因为您正在瞄准API级别19+。 ** 2 ** - 通过定位API级别18或根据操作系统版本使用不同的方法来设置PendingIntent/s。请查看[官方文档](http://developer.android.com/reference/android/app/AlarmManager.html)。 –