android 7.0低电耗Doze模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 7.0低电耗Doze模式相关的知识,希望对你有一定的参考价值。

参考技术A

如果用户设备未插接电源、处于静止状态一段时间且屏幕关闭,设备会进入低电耗模式。 在低电耗模式下,系统会尝试通过限制应用对网络和 CPU 密集型服务的访问来节省电量。 这还可以阻止应用访问网络并推迟其作业、同步和标准闹铃。

系统会定期退出低电耗模式一会儿,好让应用完成其已推迟的 Activity。在此维护时段内,系统会运行所有待定同步、作业和闹铃并允许应用访问网络。

android 7.0 则通过在设备未插接电源且屏幕关闭状态下、但不一定要处于静止状态(例如用户外出时把手持式设备装在口袋里)时应用部分 CPU 和网络限制,进一步增强了低电耗模式。

7.0进入Doze模式分两个阶段: 对App行为的限制分为light idle(浅度doze)和deep idle(深度doze) .当设备处于非充电状态且屏幕已关闭一定时间后,设备会进入低电耗模式并应用第一部分限制(light idle):关闭应用网络访问、推迟作业和同步。如果进入低电耗模式后设备处于静止状态达到一定时间,系统则会对 PowerManager.WakeLock、AlarmManager 闹铃、GPS 和 WLAN 扫描应用余下的低电耗模式限制(deep idle)。无论是应用部分还是全部低电耗模式限制,系统都会唤醒设备以提供简短的维护时间窗口,在此窗口期间,应用程序可以访问网络并执行任何被推迟的作业/同步。

在每个维护时段结束后,系统会再次进入低电耗模式,暂停网络访问并推迟作业、同步和闹铃。 随着时间的推移,系统安排维护时段的次数越来越少,这有助于在设备未连接至充电器的情况下长期处于不活动状态时降低电池消耗。

图中,横轴表示随着时间的推移,橙色表示设备处于唤醒运行状态,绿色表示低电耗(Doze)休眠状态;当设备处于on battery(利用电池供电,也就是未插接电源),screen off(关闭屏幕),stationary(静止状态,7.0以后非静止状态亦可)保持以上条件一段时间之后,设备就会进入Doze模式.

maintenance window (低电耗(Doze)模式提供了定期维护时段,可供应用使用网络并处理待定Activity),Doze模式下会定期的进入maintenance window,但进入的间隔越来越长

一旦用户通过移动设备、打开屏幕或连接到充电器唤醒设备,系统就会立即退出低电耗模式,并且所有应用都将返回到正常 Activity。

在低电耗模式下,您的应用会受到以下限制:

应用待机模式: 允许系统判定 应用在用户未主动使用它时,将应用置为空闲状态;通俗的说是指用户在一段时间内没有使用某个app,系统就会让这个app处于空闲状态,空闲状态会限制app访问网络,推迟app的作业和同步任务

当用户有一段时间未触摸应用,且除以下条件外,都将被标记为空闲状态

当用户将设备插入电源时,系统将从待机状态释放应用,从而让它们可以自由访问网络并执行任何待定作业和同步。 如果设备长时间处于空闲状态,系统将按每天大约一次的频率允许空闲应用访问网络。

低电耗模式

您可按以下步骤测试低电耗模式:

您可能需要多次运行第二个命令。不断地重复,直到设备变为空闲状态。

应用待机模式

要在应用待机模式下测试您的应用,请执行以下操作:

亲测MIUI 9.5执行 adb shell am set-inactive com.tencent.mobileqq true 结果始终为: Idle=false 而测试其他包名则没有异样,也就是小米针对QQ这种用户量大的即时通讯软件做了针对性处理

通过妥善管理网络连接、闹铃、作业和同步并使用 GCM 高优先级消息,几乎所有应用都应该能够支持低电耗模式。对于一小部分用例,这可能还不够。 对于此类用例,系统为部分免除低电耗模式和应用待机模式优化的应用提供了一份可配置的白名单。

在低电耗模式和应用待机模式期间,加入白名单的应用可以使用网络并保留部分 wake locks。 不过,正如其他应用一样,其他限制仍然适用于加入白名单的应用。 例如,加入白名单的应用的作业和同步将推迟(在 API 级别 23 及更低级别中),并且其常规 AlarmManager 闹铃不会触发。通过调用 isIgnoringBatteryOptimizations(),应用可以检查自身当前是否位于豁免白名单中。

用户可以在 Settings > Battery > Battery Optimization 中手动配置该白名单。或者,系统会为应用提供请求用户将应用加入白名单的方式。

如何将非系统app预置到Doze的白名单中

在请求用户将应用添加到白名单之前,请确保应用符合加入白名单的可接受用例。

Doze模式的实现主要在/frameworks/base/services/core/java/com/android/server/DeviceIdleController.java

以上主要内容参考自Google官方文档 .

android 21 是啥版本

android每一个系统版本都对应一个编号的,21代表安卓5.0系统,23代表安卓6.0系统。

API等级15:Android 4.0.3 - 4.0.4 Ice Cream Sandwich

API等级16:Android 4.1 Jelly Bean

API等级17:Android 4.2 Jelly Bean

API等级18:Android 4.3 Jelly Bean

API等级19:Android 4.4 KitKat

API等级20:Android 4.4W

API等级21:Android 5.0 Lollipop

API等级22:Android 5.1 Lollipop

API等级23:Android 6.0 Marshmallow

扩展资料:

从2009年5月开始,Android操作系统改用甜点来作为版本代号,这些版本按照从C大写字母开始的顺序来进行命名:纸杯蛋糕(Cupcake)、甜甜圈(Donut)、闪电泡芙(Éclair)、冻酸奶(Froyo)、姜饼(Gingerbread)。

蜂巢(Honeycomb)﹑冰淇淋三明治(Ice Cream Sandwich)、果冻豆(Jelly Bean)、奇巧(KitKat)、棒棒糖(Lollipop)、棉花糖(Marshmallow)、牛轧糖(Nougat)、奥利奥(Oreo )、馅饼(Pie)。

参考资料来源:百度百科-安卓历史版本

参考技术A

android每一个系统版本都对应一个编号的


21代表安卓5.0系统,23代表安卓6.0系统,具体可以看下面的图


本回答被提问者和网友采纳
参考技术B android每一个系统版本都对应一个编号:21代表安卓5.0系统,23代表安卓6.0系统 参考技术C 一般是 20.1.0
Android 4.2 (也就是SDK 17)
参考技术D 安卓5.0

以上是关于android 7.0低电耗Doze模式的主要内容,如果未能解决你的问题,请参考以下文章

android 7.0对开发者会都有哪些影响

Android Doze模式分析

Android的Doze模式

Android 进阶——性能优化之电量优化全攻略及实战小结

Android 进阶——性能优化之电量优化全攻略及实战小结

Android 进阶——性能优化之电量优化全攻略及实战小结