gpt4 book ai didi

android - 关于android中AlarmManager的CPU锁的困惑

转载 作者:行者123 更新时间:2023-11-30 03:05:39 25 4
gpt4 key购买 nike

我对 AlarmManager 的行为感到困惑。 AlarmManager 是否一直持有 CPU 锁?他们在 android 开发者引用网站上说

The Alarm Manager holds a CPU wake lock as long as the alarm receiver's onReceive() method is executing

另一方面,RTC_WAKEUP 表示

Alarm time in System.currentTimeMillis() (wall clock time in UTC), which will wake up the device when it goes off

假设我的设备除了我的之外没有其他任务。 CPU 可以在完成我的工作后进入休眠状态。那么在下面的情况下会发生什么呢?

am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 60 * 10, pi);
//pi is pendingIntent.

情况一:

CPU go to sleep and wake up after 10 minutes. [I will acquire wake lock in intent class]

情况2:

AlarmManager holds CPU for next 10 minutes. It's a repeating task, so AlarmManager holds the CPU all the time until it canceled.

编辑

下面的伪代码有什么区别吗

acquire_cpu_wakelock();
while(!canceled)
{

sleep(10); //minutes [update]
finish_task();

}
release_cpu_wakelock();

am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 60 * 10, pi);

最佳答案

Does AlarmManager hold the CPU lock all the time?

没有。

Then what will happen in following situation?

您的 PendingIntent 将在您调用 setRepeating() 后 10 分钟被调用(API 级别 19+ 除外,在这种情况下,重复警报是不准确的,所以准确的时间是不确定的)。

AlarmManager holds CPU for next 10 seconds.

没有。首先,你的闹钟是 10 分钟,而不是 10 秒。其次,CPU 将被允许进入休眠模式。一个不同的电路将安排在适当的时间将其唤醒。

Is there any difference between the following pseudo codes

第一个将使 CPU 保持通电 10 秒。

第二个将允许 CPU 进入休眠模式,约 10 分钟后再次唤醒(“~”回到我对 API 级别 19+ 的评论)。

关于android - 关于android中AlarmManager的CPU锁的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21864254/

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