代码之家  ›  专栏  ›  技术社区  ›  michael

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

  •  0
  • michael  · 技术社区  · 10 年前

    我需要我的闹钟每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和amp;电池消耗等,但如果我想的话,仍然有一个确切的选项,这就是我认为我实现的。

    1 回复  |  直到 5 年前
        1
  •  2
  •   Lucas    10 年前

    试试这个:

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

    第一次启动警报的延迟时间为2秒或以上。