
Android 电源管理
_dowork
这个作者很懒,什么都没留下…
展开
-
android6.0 power按键深入分析
这篇博客主要分析power按键点亮屏幕和灭屏,而且我们主要分析在PhoneWIndowManager的流程。之前的博客我们分析过按键的流程,当有按键会先到PhoneWindowManager的interceptKeyBeforeQueueing函数,然后再去分析到应用,而power按键也是如此,并且其最后不会分发到应用中去,下面我们看下PhoneWindowManager的interceptK转载 2016-10-28 14:09:47 · 1112 阅读 · 0 评论 -
Android7.0 PowerManagerService(2) WakeLock的使用及流程
作为移动终端,电量是一种稀缺资源,需要尽可能的节省。于是,Android系统在空闲时,会主动进入到休眠状态。我们知道整个Android系统中运行着很多个进程,因此必须有一种机制能够知道每个进程是否正在进行重要的工作,只有这样Android系统才能对整个终端当前的状态做出判断。显然我们不能启动一个进程,去主动监管其它所有进程的工作状态,这样CPU开销太大,反而加剧了电量的消耗。为此And转载 2017-04-15 16:43:15 · 691 阅读 · 0 评论 -
Android7.0 PowerManagerService(1) 启动过程
版权声明:转载请注明:http://blog.youkuaiyun.com/gaugamela/articlePowerManagerService负责Android系统中电源管理方面的工作,为了简便我们在下文中将其简称为PMS。我们先大致了解一下PMS在Android中的整体结构: 如上图所示,可以看出PMS的对外接口是PowerManager,其通过Binder通信来调用PMS中定义转载 2017-04-15 16:33:43 · 361 阅读 · 0 评论 -
Android7.0 PowerManagerService(3) 核心函数updatePowerStateLocked的主要流程
前面的博客中,我们已经分析过,当Android中的进程要使用电量时,需要向PMS申请WakeLock;当进程完成工作后,需要释放对应的WakeLock。PMS收到申请和释放WakeLock的请求后,均需要调用updatePowerStateLocked来更新电源的状态,该函数是PMS的核心方法。 接下来,我们就结合代码,看一下updatePowerStateLocked的工作流程。转载 2017-04-15 17:07:28 · 881 阅读 · 0 评论 -
Android7.0 PowerManagerService Power按键流程
按键的处理主要由InputManagerService负责,属于Android输入系统的流程。在这篇博客里,我们只关注与Power键相关的内容。InputManagerService处理的按键事件,最终将会传递到PhoneWindowManager的interceptKeyBeforeQueueing函数。我们就从这个函数开始,逐步进行分析。public int interceptKe原创 2017-04-15 17:18:43 · 1241 阅读 · 0 评论 -
Android7.0 电源管理-updatePowerStateLocked 基本流程图
原创 2017-04-16 22:32:44 · 952 阅读 · 0 评论 -
power key休眠唤醒时序图
原创 2017-04-14 18:04:23 · 722 阅读 · 0 评论 -
Power key 序列图
原创 2017-04-14 17:38:06 · 311 阅读 · 0 评论 -
Power key处理流程图
原创 2017-04-14 17:35:42 · 788 阅读 · 0 评论 -
Android 7.0 Doze模式分析
设置白名单wakeLock白名单在DeviceIdleController中我们调用PowerManagerService.java中的setDeviceIdleWhitelist设置白名单,这里的appids是uid @Override public void setDeviceIdleWhitelist(int[] appids) {原创 2017-03-14 14:57:36 · 10858 阅读 · 1 评论 -
Android 6.0关机流程图
原创 2016-11-07 19:12:29 · 1202 阅读 · 0 评论 -
Android7.0 Doze模式分析(一)Doze介绍 & DeviceIdleController
参考:http://blog.youkuaiyun.com/gaugamela/article/details/52981984在Android M中,Google就引入了Doze模式。它定义了一种全新的、低能耗的状态。 在该状态,后台只有部分任务被允许运行,其它任务都被强制停止。在之前的博客中分析过Doze模式,就是device idle状态。可能有的地方分析的不是很详细,现在在androi转载 2017-03-13 17:40:28 · 4285 阅读 · 0 评论 -
Android 6.0 Doze状态切换
Doze打盹模式共有五种状态,不同状态间的切换如下图所示,如果厂家没有修改时间的话,因此从灭屏到Doze模式,至少需要61分钟,官方是60分钟,但需要1分钟作为运动监测。根据代码跟踪,如果应用不在白名单,系统灭屏经过大约一小时后,上层应用wake lock,alarm,还有网络链接都会失效,除非你是白名单应用原创 2016-12-12 14:47:19 · 1137 阅读 · 0 评论 -
Android 6.0 Healthd
healthd主要是读取电池节点的信息,传给BatteryService。或者在关机充电等使用。注意healthd中使用的是kernel的log,存在路径:system\core\healthdmain函数int main(int argc, char **argv) { int ch; int ret; klog_set_level(KLOG_LEV原创 2016-11-30 15:04:15 · 1209 阅读 · 0 评论 -
Android 6.0 电池充电时间分析
对电池的变化都会监听BatteryService发出的Intent.ACTION_BATTERY_CHANGED广播KeyguardUpdateMonitor.java onRecive中else if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { final int status = intent原创 2016-11-30 16:57:35 · 3416 阅读 · 0 评论 -
Android 6.0 BatteryService分析
BatteryService.javaBatteryService构造函数只是读取资源值 public BatteryService(Context context) { super(context); mContext = context; mHandler = new Handler(true /*async*/);原创 2016-11-30 17:31:24 · 1166 阅读 · 0 评论 -
Android 6.0 BatteryManager分析
BatteryManager.javaBatteryManager构造函数 public BatteryManager() { mBatteryStats = IBatteryStats.Stub.asInterface( ServiceManager.getService(BatteryStats.SERVICE_NAME))原创 2016-12-01 14:54:14 · 2118 阅读 · 0 评论 -
Android 6.0 PowerManagerService 一
SystemServer.javastartBootstrapServices 函数中 mPowerManagerService = mSystemServiceManager.startService(PowerManagerService.class);PowerManagerService.javaPowerManagerService构造函数原创 2016-12-02 15:07:25 · 950 阅读 · 0 评论 -
WakeLock使用
WakeLock使用我们先来看一下Android官方对PowerManager和WakeLock的注解:PowerManager:This class gives you control of the power state of the device.WakeLock:A wake lock is a mechanism to indicate that your applicati原创 2016-12-12 11:08:52 · 588 阅读 · 0 评论 -
Android 6.0 设备Idle状态介绍
原文地址:http://blog.youkuaiyun.com/licaomengRICE/article/details/48735957原文链接:https://newcircle.com/s/post/1739/2015/06/12/diving-into-android-m-doze注意:这篇博文的所有描述都是基于Android‘M’开发者预览的第一版本。因为新的版本(包括码代码)已经发布转载 2016-12-12 11:43:10 · 6616 阅读 · 0 评论 -
Android 6.0 PowerManagerService 之 updatePowerStateLocked函数
updatePowerStateLocked/** * Updates the global power state based on dirty bits recorded in mDirty. * * This is the main function that performs power state transitions. * We cen原创 2016-12-06 16:17:39 · 1000 阅读 · 0 评论 -
Android 6.0 PowerManagerService 之 Display
继续updatePowerStateLocked函数 // Phase 2: Update display power state. boolean displayBecameReady = updateDisplayPowerStateLocked(dirtyPhase2);systemReady首先先看systemReady函数中与原创 2016-12-07 16:38:17 · 1299 阅读 · 0 评论 -
Brightness 调节时序图
设备节点/sys/class/leds/lcd-backlight原创 2016-12-07 17:01:54 · 468 阅读 · 0 评论