android何时会在没有唤醒锁定的情况下停止其CPU?

时间:2011-12-01 06:35:54

标签: android wakelock

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

但是我想知道cpu唤醒锁何时会生效。

1.如果我创建了一个新线程,并且在没有唤醒锁定的情况下继续在后台排空CPU,关闭屏幕将不会停止它。它会停止吗?什么时候会停止?

2.使用Timer.schedule()调度的线程怎么样?

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

感谢。

2 个答案:

答案 0 :(得分:7)

解答所有子问题

  1. 当没有唤醒锁定处于活动状态时,Android会休眠。无论什么进程和线程正在运行它仍然会睡觉。这意味着如果你的线程或其他进程没有激活唤醒锁定,你的线程将不会执行,因此不会耗尽任何电池。只有当某些其他进程获取唤醒锁时,该线程才会处于活动状态。

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

  3. 是。

答案 1 :(得分:0)

我从与Wake-Lock相关的不同功能中学到了什么,Android系统永远不会睡觉,如果它睡不着,你就不会收到短信,呼叫即Android在睡眠时不会只运行操作系统级任务。 /> 唤醒锁定是一种机制,任何应用程序都可以请求系统让设备继续使用。应用程序可以在后台执行操作,尽管用户无法启动该应用程序。

1& 2阿克萨尔已正确解释。 3.为了在系统处于睡眠状态时执行应用程序中的任何操作(仅运行OS级别任务),首先必须从系统请求唤醒锁定,然后只有应用程序才能运行其操作。完成操作后,您应该释放唤醒锁定,以便系统可以转移到管理操作系统级别的任务。