AlarmManager setInexactRepeating 在 Android 4.1.2 中不起作用,在 Android 4.3 及更高版本中起作用
AlarmManager setInexactRepeating not working in Android 4.1.2, works on Android 4.3 and Above
我正在尝试创建一个重复的警报管理器调用,我发现对于 Android 4.1、4.2,它不会在第一次被触发,我需要等待时间间隔才能看到进程正常工作:
public void startScheduler() {
AlarmManager alarm = (AlarmManager)getSystemService(ALARM_SERVICE);
alarm.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 100, // now
AlarmManager.INTERVAL_FIFTEEN_MINUTES, // Interval
getSchedulerPendingIntent());
}
这仅在达到 AlarmManager.INTERVAL_FIFTEEN_MINUTES 而不是 "triggerAtMillis" 参数时有效。问题是这适用于 Android 4.4 和 Android 5.0.
如果我用 setRepeating 更改 setInexactRepeating,它在 Android 4.1 和 4.2 上完美运行,所以:
public void startScheduler() {
AlarmManager alarm = (AlarmManager)getSystemService(ALARM_SERVICE);
alarm.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 100, // now
AlarmManager.INTERVAL_FIFTEEN_MINUTES, // Interval
getSchedulerPendingIntent());
}
完美适用于 Android 4.1、4.2、4.3、4.4 和 5.0。唯一的缺点是,对于 Android Api 19 及以上,它将作为一个不精确的重复工作,而对于 android API 19 及以下,它将按预期工作。
它有什么相关的区别吗?我错过了什么?
提前致谢!
引用the documentation for setInexactRepeating()
,特别是triggerAtMillis
参数:
time in milliseconds that the alarm should first go off, using the appropriate clock (depending on the alarm type). This is inexact: the alarm will not fire before this time, but there may be a delay of almost an entire alarm interval before the first invocation of the alarm.
哇,这似乎按预期工作。
我正在尝试创建一个重复的警报管理器调用,我发现对于 Android 4.1、4.2,它不会在第一次被触发,我需要等待时间间隔才能看到进程正常工作:
public void startScheduler() {
AlarmManager alarm = (AlarmManager)getSystemService(ALARM_SERVICE);
alarm.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 100, // now
AlarmManager.INTERVAL_FIFTEEN_MINUTES, // Interval
getSchedulerPendingIntent());
}
这仅在达到 AlarmManager.INTERVAL_FIFTEEN_MINUTES 而不是 "triggerAtMillis" 参数时有效。问题是这适用于 Android 4.4 和 Android 5.0.
如果我用 setRepeating 更改 setInexactRepeating,它在 Android 4.1 和 4.2 上完美运行,所以:
public void startScheduler() {
AlarmManager alarm = (AlarmManager)getSystemService(ALARM_SERVICE);
alarm.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 100, // now
AlarmManager.INTERVAL_FIFTEEN_MINUTES, // Interval
getSchedulerPendingIntent());
}
完美适用于 Android 4.1、4.2、4.3、4.4 和 5.0。唯一的缺点是,对于 Android Api 19 及以上,它将作为一个不精确的重复工作,而对于 android API 19 及以下,它将按预期工作。
它有什么相关的区别吗?我错过了什么?
提前致谢!
引用the documentation for setInexactRepeating()
,特别是triggerAtMillis
参数:
time in milliseconds that the alarm should first go off, using the appropriate clock (depending on the alarm type). This is inexact: the alarm will not fire before this time, but there may be a delay of almost an entire alarm interval before the first invocation of the alarm.
哇,这似乎按预期工作。