Android休眠
文章平均质量分 79
“Android休眠”系列专注于Framework层的休眠分析,从流程切入,逐步深入;Framework层完成的是early休眠,Android专业术语叫early suspend。
__2017__
七分实践,三分理论。
展开
-
【Android休眠】引申之关于系统PM的思考
对于一个完整的系统,我们在做PM(Power Manager)相关的事情时,应该(至少)其休眠涉及三个部分:用户(User Space)、CPU(Kernel)、外设。这篇短文对三者之间关系进行梳理总结。原创 2017-01-22 15:42:20 · 744 阅读 · 0 评论 -
【Android休眠】引申之uinput: 用户空间的输入子系统
uinput is a linux kernel module that allows to handle the input subsystem from user land. It can be used to create and to handle input devices from an application. It creates a character device in /dev/input directory. The device is a virtual interface, it转载 2016-12-28 17:38:57 · 2122 阅读 · 1 评论 -
【Android休眠】之kernel电源管理
关于kernel的电源管理部分,有一位首席PM专家的博客写得相当好,为方便故,分享一下。原创 2016-12-28 12:05:23 · 1957 阅读 · 1 评论 -
【Android休眠】之AutoSleep
当所有唤醒源状态都为“deactive”,系统自动进入休眠状态,实现该功能的即是“autosleep”。由于“Android设备的特别需求”,Android提出了“Opportunistic Suspend”:Rather than trying to put the various system components into a low-power state, opportunistic suspend works by simply suspending the entire device wh原创 2016-12-16 13:12:15 · 6752 阅读 · 1 评论 -
【Android休眠】之休眠锁的获取和释放
引起休眠动作(进入休眠前执行一些必要的操作)的事件有两个:(1)PowerKey事件,通过JNI调用PowerManagerService中的goToSleepFromNative()方法;(2)Timeout,指【设置->显示->休眠】中设置的Timeout数值。最终都会调用到updatePowerStateLocked()方法,在更新一些标志的状态、发送休眠通知后,调用updateSuspendBlockerLocked()执行休眠锁的释放动作。原创 2016-12-16 13:11:41 · 4046 阅读 · 0 评论 -
【Android休眠】之Android对PowerKey事件的处理(2)EventHub
EventHub是Android中Input事件的处理中心,完成kernel上报事件的读取、初步处理、传递。(1)读取:Input设备一旦产生动作,将通过事件(Event)的方式通知user空间;user空间通过读取/dev/input目录下各个文件,获取事件及事件所属的Input设备信息。(2)初步处理:kernel是以struct input_event的格式上报数据,这里只是根据读取的该结构体做一个简单的封装,成RawEvent形式的数据。(3)传递:RawEvent形式的数据传递给Inpu原创 2016-12-16 13:09:58 · 2957 阅读 · 0 评论 -
【Android休眠】之Android对PowerKey事件的处理(1)代码流程
Android休眠在framework的处理涉及两个系统服务,InputManagerService和PowerManagerService。InputManagerService负责处理PowerKey产生的Input事件,根据事件类型调用PowerManagerService的休眠、唤醒接口;PowerManagerService执行具体的休眠、唤醒动作。本篇目的:始知此事要躬行,如果有意弄清流程,提供一个参照。原创 2016-12-16 13:08:47 · 4657 阅读 · 0 评论 -
【Android休眠】之PowerKey唤醒源实现
版本信息:Linux:3.10Android: 4.4一、唤醒源设备休眠后,通过触发唤醒源使设备恢复正常工作模式。设备唤醒源有多种,对于Android设备常见的就有PowerKey、来电唤醒、Alarm唤醒等。唤醒源的实现处于内核空间,本文重点讨论下PowerKey作为唤醒源的具体实现。二、PowerKey唤醒源PowerKey唤醒设备的原理,本质其原创 2016-12-15 22:19:01 · 7106 阅读 · 0 评论 -
【Android休眠】之Android休眠机制
1、Android设备屏幕暗下来的时候,并不是立即就进入了休眠模式;当所有唤醒源都处于de-avtive状态后,系统才会进入休眠。2、Android设备连着adb线到其他设备的情况下,设备是不会进入休眠模式的。3、有休眠操作就有唤醒,就需要唤醒源。唤醒源有很多种,在内核注册,比如常用的Power按键。4、曾经困惑的一个问题:系统怎么知道自己应该进入休眠模式了?它的判断依据是什么? 在wakelock时代,系统休眠过程中去检测休眠锁;如果系统中没有其他部件持有休眠锁,就尝试进入休眠模式,原创 2016-12-14 21:42:13 · 26543 阅读 · 2 评论