为什么AlarmManager.INTERVAL_HALF_HOUR每45分钟才会被触发一次?

时间:2012-11-18 22:49:18

标签: android

我以下列方式启动闹钟:

protected void onHandleIntent(Intent intent) {
    Log.v("alarm", "onHandleIntent");

    int alarmType = AlarmManager.ELAPSED_REALTIME_WAKEUP;
    long interval = AlarmManager.INTERVAL_HALF_HOUR;
    long timeToRefresh = SystemClock.elapsedRealtime() + interval;

    alarmManager.setInexactRepeating(alarmType, timeToRefresh, interval, alarmIntent);

    updateService();
}

但警报并非每30分钟触发一次,但每隔45分钟触发一次。为什么? setInexactRepeating的容差是15分钟吗?

2 个答案:

答案 0 :(得分:0)

从文档中,“您的闹钟的第一次触发不会在请求的时间之前,但在此之后几乎整整一段时间内可能不会发生。此外,虽然重复闹钟的整个周期将按要求进行,任何两次连续发出警报之间的时间可能会有所不同。如果您的应用程序需要非常低的抖动,请改用setRepeating(int,long,long,PendingIntent)。“

来源:AlarmManager

答案 1 :(得分:0)

你应该使用RTC_WAKEUP,因为这基本上更有意义。它是now(就像挂钟,不是自启动等),你想要在“now + 30分钟内唤醒。”