版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
当用户在settings打开省电模式的开关后,系统会进入到省电模式,在各种方面进行限制以尽可能的省电。今天我们来分析一下,省电模式限制网络连接的逻辑。
前言:首先分析一下打开省电模式按钮之后发生了什么:
1、先来看一下Battery saver的switch开关,当我们打开Battery saver的时候
//packages/apps/Settings/src/com/android/settings/fuelgauge/BatterySaverSettings.java
privatevoidtrySetPowerSaveMode(booleanmode) {
if(!mPowerManager.setPowerSaveMode(mode)) {
…
}
2.当应用调用了PMS的setPowerSaveMode进行省电模式,会进入PowerManagerService.java,里面主要包括权限检查和进一步设置
//PowerManagerService.java
publicbooleansetPowerSaveMode(booleanmode) {
//这个操作需要调用者用有DEVICE_POWER权限
mContext.enforceCallingOrSelfPermission(
android.Manifest.permission.DEVICE_POWER,null);
//......
//进行省电模式内部设置
returnsetLowPowerModeInternal(mode);
}
3.省电模式内部设置setLowPowerModeInternal,里面包含省电模式标志位LOW_POWER_MODE的设置,省电模式mLowPowerModeSetting的设置
privatebooleansetLowPowerModeInternal(booleanmode) {
……
//此时会设置省电模式标志位LOW_POWER_MODE设置
Settings.Global.putInt(mContext.getCo