gpt4 book ai didi

android - AlarmManager - 任务队列(PendingIntent 队列)

转载 作者:行者123 更新时间:2023-11-29 22:58:13 25 4
gpt4 key购买 nike

我正在使用 AlarmManager 为我的小部件应用安排一些定期更新。我是这样安排的:

            context.getSystemService<AlarmManager>()!!
.setInexactRepeating(
AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime() + refreshInterval.intervalMillis,
refreshInterval.intervalMillis,
pendingIntent
)

我的待定意向如下所示:

PendingIntent.getBroadcast(
context,
RQ_CODE_BASE + id,
getStartIntent(context, appWidgetId),
PendingIntent.FLAG_UPDATE_CURRENT
)

如您所见,我正在使用非唤醒、不精确的重复闹钟。当手机处于唤醒状态时,一切似乎都运行良好,所有计划都在 AlarmManager 触发警报后立即执行。

intervalMillis 等于 60k (1 分钟)。然后,当手机处于 sleep 状态 10 分钟 时,在将其恢复为“生命”后,我看到它没有触发我的 PendingIntent 一次,而是正在执行 PendingIntent 操作 10 一个接一个,就像在排队一样。我认为使用 PendingIntent.FLAG_UPDATE_CURRENT 标志会导致取消之前的待定警报操作,并在手机唤醒后安排新的警报操作,但不幸的是它不是那样工作的。

有什么方法可以实现预期的行为吗?我找不到任何 AlarmMananger 方法可以让我为特定的未决 Intent 查找任务队列。

如果有任何帮助/建议,我将不胜感激。

最佳答案

这是使用重复警报的缺点之一。我不会为此使用重复警报。如果您希望闹钟每 X 分钟响一次,那么从现在开始安排 X 分钟闹钟一次。当该闹钟触发时,随心所欲,然后安排一个闹钟从现在起 X 分钟后响起。

单个警报更可预测,它们不会“排队”,如果需要,您可以使用精确警报。

关于android - AlarmManager - 任务队列(PendingIntent 队列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57187408/

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