Android 警报管理器以不准确的时间间隔重复

Android Alarm Manager repeating in not accurate time interval

我需要我的闹钟每 30 秒触发一次 - 尽可能精确(+/-3 秒)。所以我阅读了 this(官方 Android 指南)并实施了这个:

AlarmManager alarm = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, MyService.class);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 30000, pendingIntent);

结果:警报 +/- 每 50 秒触发一次,如果我给出的间隔为 30 秒,则不太准确。

问题出在哪里,这是怎么回事?在文档中,他们说要小心使用精确计时器,因为 cpu 和电池消耗等。但是如果我想要的话,仍然有一个精确的选项,这就是我认为我实现的。

试试这个:

alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (2 * 1000), (30 * 1000), pendingIntent);

更改第一次启动警报的延迟 2 秒或更多秒。