android - android什么时候会在没有唤醒锁的情况下停止它的cpu?

标签 android wakelock

我知道 android 使用唤醒锁来保持 cpu 运行或屏幕打开。 很明显,屏幕唤醒锁定可防止用户 Activity 计时器在用户一段时间不活动后关闭屏幕。

但我想知道 cpu 唤醒锁到底什么时候生效。

1.如果我创建一个新线程并在没有任何唤醒锁的情况下继续在后台耗尽 cpu,关闭屏幕不会停止它。它会停止吗?什么时候停止?

2.用 Timer.schedule() 调度的线程呢?

3.这会引出另一个问题,如果我在一个服务中保持一个长套接字连接,它在 socket.read() 处被阻塞。我是否必须获取唤醒锁以确保当套接字从远程接收任何数据时服务将被唤醒?

谢谢。

最佳答案

所有子问题的答案

  1. Android 在没有激活唤醒锁时休眠。不管正在运行什么进程和线程,它仍然会休眠。这意味着如果你的线程或其他一些进程没有激活唤醒锁,你的线程将不会执行,因此不会耗尽任何电池。只有当其他进程获得唤醒锁时,线程才会被激活。

  2. 同样适用于 Timer.schedule()。假设您编写了一个每秒执行一次但没有任何唤醒锁的计时器,并假设 android 进入休眠状态 10 秒。当它在第 11 秒唤醒 p 时,它会识别出您的计时器已过期 10 次,它会简单地丢弃这 9 个实例并只执行一次。如果您想要非常可靠的计时器,您将必须获得唤醒锁或用户 AlarmTimer。

  3. 是的。

关于android - android什么时候会在没有唤醒锁的情况下停止它的cpu?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8337418/

相关文章:

Android服务器联系服务保活

android - 使用标志 ON_AFTER_RELEASE 释放唤醒锁的问题

sip - Android VoIP 应用程序 : PARTIAL_WAKE_LOCK vs ignoring Battery Optimizations (doze whitelisting)

Android GPS 和电池使用情况

android - 将自定义图标应用于 Android 项目

Android 数据绑定(bind) - 如何从 dimens.xml 获取维度

android - 在 flutter 应用程序中添加 image_picker 插件后,Gradle 构建失败

android - GCM-App 真的需要唤醒锁吗?

Android加速度计采样率统计

android - GUI 不显示所有收到的数据包