Android 6.0的省电技术Doze和App Standby理解及测试

本文章转载于搜狗测试

对于移动app,性能优化是永无止境的话题,而在性能指标中,耗电量又是重中之重,android的大神们当然也在为此努力,所以从android 6.0开始,谷歌引入了两项新的省电技术延长电池使用时间,分别是Doze(休眠)和App Standby(app待命模式),只要app是运行在6.0(api 23)及以上的系统,

无论app编译时是否使用的target=23,都会受到这两种技术的限制

一、理解什么是Doze模式

如果设备满足

1、屏幕关闭;

2、没有连接电源,

这样持续一段时间后系统就会进入Doze模式,在Doze模式下,系统通过限制app访问网络和其对CPU使用来达到省电的目的,app的网络访问功能会被禁用,同时延时执行作业,异步任务及标准闹钟事件。

同时,为了保证app的工作,系统会周期地退出Doze模式,以保证app完成那些被延时的任务,如下图,这个状态被称作maintenance window(维护窗口)。且随着系统处于Doze模式时间增长,进入maintenance window的频率会降低。

二、Doze 模式下的限制

网络访问功能被关闭

系统会忽略wake locks,即app无法持续占有电源

标准闹钟 AlarmManager(包括setExact())和setWindow()))都会被延时到下一个maintenancewindow才激活

1 . 如果app仍需要在Doze时使闹钟生效,可以使用setAndAllowWhileIdle())或setExactAndAllowWhileIdle())

2 . 使用函数setAlarmClock())设置的闹钟在Doze时仍会生效,系统会在闹钟生效前推出Doze。

系统不会进行Wi-Fi扫描

系统不允许异步Adapters运行

系统不允许JobScheduler运行

三、理解App Standby

android系统通过App Standby机制可以把用户没有使用的app置为空闲状态,当然前提是app没有命中以下条件:

用户明确的启动了该app

app有前台进程(包括前台的activity、前台service,或者正在被其他activity及前台service使用)

app当前没有在锁屏界面或者通知栏有通知

当设备连接到电源时,系统会把所有处于standby的设备恢复到正常运行状态,如果设备长期处于空闲状态,系统会每天允许standby 的app联网一次

四、当设备处于Doze模式时,使用GCM与app进行交互。

Google Cloud Messaging (GCM)是谷歌提供的一套用于服务端实时推送消息的服务,通过high-priority GCM messages,GCM实现了在Doze和App Standby模式下的正常工作,GCMhigh-priority messages会唤醒app并允许其进行网络访问,即使当前设备正处于Doze模式或app整除standby状态。而当app处理完推送消息后,app又会进入Standby状态。所以GCM high-priority messages并不会影响系统的Doze状态,也不会影响其他出于Standby状态的app,这样有助于最小化电量的消耗。

五、支持其他的用户场景

如果使用GCM仍不能满足app的需求,android还提供了白名单机制使app能在Doze和Standby时仍能够访问网络和使用partial wakelocks,然而,其他的限制,如作业调度,异步操作,及闹钟仍不会执行。

开发者可以通过接口isIgnoringBatteryOptimizations())来判断当前app是否处于白名单中。对于白名单,有以下几点值得关注:

用户可以手动配置白名单,其位置在设置->电池->电池优化

开发者可以通过发送action为REQUEST_IGNORE_BATTERY_OPTIMIZATIONS的Intent来调起电池优化配置页面。

开发者也可以通过添加权限REQUEST_IGNORE_BATTERY_OPTIMIZATIONS使其可以触发系统对话框,询问用户是否将该app添加到白名单中。触发添加白名单确认对话框的action为ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS

当然,如果用户需要,他们可以随时在电池优化配置里把app从白名单中移除。

六、测试Doze及App Standby下的应用工作状态

(一)在Doze时测试APP

1 . 需要一台系统版本大于等于6.0(api23)的设备

2 . 连接USB,运行被测app,保持app在活动状态

3 . 关闭设备屏幕

4 . 通过下面的adb命令强制系统进入Doze模式

$ adb shell dumpsys battery unplug

$ adb shell dumpsys deviceidle step

第二个命令需要执行多次才能使系统进入idle状态

5 .  退出Doze状态,检查app的工作状态符合预期

(二)测试App Standby

1 . 需要一台系统版本大于等于6.0(api23)的设备

2 . 连接USB,运行被测app,保持app在活动状态

3 . 通过下面的adb命令使app进入standby

$ adb shell dumpsys battery unplug

$ adb shell am set-inactive true

4 . 通过下面的adb命令模拟唤醒app

$ adb shell am set-inactive false

$ adb shell am get-inactive

5 . app唤醒后检查其工作状态符合预期,尤其是通知和后台任务是否正常

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259

推荐阅读更多精彩内容