365bet最稳定网址-365bet官网注册开户-77365bet体育在线投注

android不能进入睡眠的原因

android不能进入睡眠的原因

1,电源管理方案

android电源管理分为modem和AP两部分,modem为主控模块,控制MPM、PMIC、TCXO时钟、以及GPIO睡眠状态等。

AP主要控制一些外围设备,在suspend和resume设置外围设备的状态。

Modem进入睡眠的标志是TCXO shutdown,在modem侧有一个sleepTask来判断系统是否进入睡眠模式,sleepTask始终以

最低优先级运行,通过各个Task的投票sleepTask决定系统是否进入睡眠,整个AP侧算成一票。如果所有有投票权的应用都

投了sleep票,则modem就会进入睡眠模式。

2,导致android不能进入睡眠的原因

AP电源管理方案使用Google的wake_lock机制。在内核中维护了一个wake_lock的链表,如果

有应用或者内核模块希望系统不要进入睡眠模式就可以申请wake_lock,这时就会在wake_lock链表

中增加一项,在释放wake_lock后就会删除链表中相应的项。AP侧进入suspend前会判断当前是否

有活动的wake_lock,如果有则AP不会进入suspend状态。

由于modem相对比较稳定,系统不能进入睡眠的原因主要是由于AP有活动wake_lock没有释放

导致AP侧没有进入suspend。

3,查看那些应用申请了wake_lock导致系统不能睡眠

(1),查看用户空间进程是否有活动的wake_lock

查看/sys/power/wake_lock节点看是否有活动的wake_lock

&nbs

相关推荐