我以下列方式启动闹钟:
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分钟吗?
答案 0 :(得分:0)
从文档中,“您的闹钟的第一次触发不会在请求的时间之前,但在此之后几乎整整一段时间内可能不会发生。此外,虽然重复闹钟的整个周期将按要求进行,任何两次连续发出警报之间的时间可能会有所不同。如果您的应用程序需要非常低的抖动,请改用setRepeating(int,long,long,PendingIntent)。“
来源:AlarmManager
答案 1 :(得分:0)
你应该使用RTC_WAKEUP
,因为这基本上更有意义。它是now
(就像挂钟,不是自启动等),你想要在“now
+ 30分钟内唤醒。”