gpt4 book ai didi

android - AlarmManager setInexactRepeating 不适用于 Android 4.1.2,适用于 Android 4.3 及更高版本

转载 作者:行者123 更新时间:2023-11-29 20:55:46 25 4
gpt4 key购买 nike

我正在尝试创建一个重复的警报管理器调用,我发现对于 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 及更高版本,它将作为 inexactRepeating 工作,而对于 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.

IOW,这似乎按预期工作。

关于android - AlarmManager setInexactRepeating 不适用于 Android 4.1.2,适用于 Android 4.3 及更高版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27806336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com