Android系统休眠机制和doze模式的关系

不操作android设备一段时间后,Android设备就会进入休眠模式,Android系统的休眠分为浅度休眠和深度休眠。


首先进入的是浅度休眠,在这种模式下,lcd、tp等关闭用以节省电量。


一段时间后,若没有应用持有wake_lock的锁,进入深度睡眠模式,在深度休眠的过程中系统会首先冻结所有可以冻结的进程,然后依次挂起所有设备的电源,挂起顺序与设备注册的顺序相反,这样保证了设备之间电源的依赖性;直至最后进入省电模式,等待用户或者RTC唤醒;在唤醒过程中则会按照设备注册的顺序依次恢复每个设备的电源进入正常工作状态,解冻相关的进程,然后再进行浅度休眠的唤醒流程。


在深度睡眠模式下,是可以有消息push的,因为深度休眠下虽然AP会休眠,网络断开,但是BP是工作的,可以通过心跳机制,保持和服务器的长连接,当有消息来的时候,BP唤醒AP执行相应的操作。这里设置心跳机制应该是基于AlarmManager的,若是Timer则必须持有wakelock锁,这样会导致系统无法进入深度休眠,Alarm定时器是基于工作在BP的。


doze模式是不管你会不会持有wake_lock锁,只根据时间和传感器判断是否进入doze模式。在进入Doze模式之后,只有在白名单里面的应用可以正常使用,其他应用的网络,alarm都是被暂停的。

你可能感兴趣的:(framework开发)