Android P 省电模式(LowPowerMode)(二) ------ 省电行为

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android P 省电模式(LowPowerMode)(二) ------ 省电行为相关的知识,希望对你有一定的参考价值。

参考技术A 在上篇文章 android P 省电模式(LowPowerMode)(一) ------ 省电模式手动开启流程 中最后分析到,开启省电模式后,会在 BatterySaverController 中回调所有注册的 LowPowerModeListener(onLowPowerModeChanged)和 plugin(onBatterySaverChanged),并发出广播。 我们看一下 系统做了哪些事情来实现省电。
主要有 振动,亮度,网络访问,GPS位置信息,动画,语音识别几个方面。

VibratorService.java中回调:

frameworks\base\services\core\java\com\android\server\power\PowerManagerService.java :

frameworks\base\services\core\java\com\android\server\power\BatterySaverPolicy.java :

BatterySaverPolicy.java 这个类很关键,所有关于省电模式的默认配置都在这个类里面初始化,如果要定制省电模式行为的话,这个类会被用到。

回调的流程的最终目的就是根据配置修改了 mLowPowerMode 变量的值,这个值会在调用振动时使用,用以决定要不要振动。

frameworks\base\services\core\java\com\android\server\power\PowerManagerService.java :

frameworks\base\services\core\java\com\android\server\display\DisplayManagerService.java :

frameworks\base\services\core\java\com\android\server\display\DisplayPowerController.java

sendUpdatePowerStateLocked 内部交由 Handler 消息处理,最终会调用 updatePowerState 方法:

BatterySaverPolicy.java 中定义的 默认亮度缩放比例是 0.5,亮度降低一半

mAdjustBrightnessDisabled = parser.getBoolean(KEY_ADJUST_BRIGHTNESS_DISABLED, true); //原生的配置是省电模式情况下默认不调节亮度

mAdjustBrightnessFactor = parser.getFloat(KEY_ADJUST_BRIGHTNESS_FACTOR, 0.5f);

frameworks\base\services\core\java\com\android\server\wm\WindowManagerService.java :

9.0上低电量模式下是不关闭动画的,8.0上是关闭的。

frameworks\base\services\core\java\com\android\server\net\NetworkPolicyManagerService.java

低电量模式下主要就是去更新网络访问的规则,没仔细研究,不敢妄言,Android P上也是默认没有打开限制的,开启低电量模式不去限制网络。

frameworks\base\services\core\java\com\android\server\power\batterysaver\BatterySaverLocationPlugin.java :

低电量情况下,灭屏后会关闭GPS,临时限制所有应用访问位置信息。

以上都是 开启低电量模式后,BatterySaverController.java 中主动去回调的,以下是 各模块自己监听 ACTION_POWER_SAVE_MODE_CHANGED 广播后自己处理的

frameworks\base\services\voiceinteraction\java\com\android\server\soundtrigger\SoundTriggerHelper.java :

低电量模式下不识别语音

其他各上层模块,如settings,systemUI 也监听了 ACTION_POWER_SAVE_MODE_CHANGED 广播,主要是做一些 UI上的变化。

PhpStorm代码提示(省电模式)的设置与使用

PhpStorm中有个,Power Save Mode(省电模式),开启则代码不能自动提示,关闭则可以。

开启/关闭:

1、点击“File”菜单,最下面,Power Save Mode,勾选或取消;

2、点击右下角,Event Log,有个 “Disable Power Save Mode”,点击即可关闭省电模式。

 

以上是关于Android P 省电模式(LowPowerMode)(二) ------ 省电行为的主要内容,如果未能解决你的问题,请参考以下文章

Android N 多窗口布局 省电模式 全新通知功能

如何以编程方式禁用“省电”模式。 (安卓)

清单中有啥权限可以将应用程序放入省电的android中

Android这些年随着系统的升级,你的手机是不是越来约省电了呢

如何在 Android 模拟器上模拟睡眠模式

全黑界面更省电和护眼?教你打造纯黑色 Android 系统