对低电耗模式和应用待机模式进行针对性优化

       从Android 6.0(API 23)开始,Android 引入了两种省电功能(低电耗模式以及应用待机模式),帮助用户在设备未连接电源的时候延长电池的使用寿命。低电耗模式在设备长时间处于闲置状态下会推迟应用对CPU的使用以及对网络的使用以减少电池消耗。应用待机模式可推迟用户近期未与之的交互的应用使用网络。

        低电耗模式以及应用待机模式会影响运行在Android 6.0以及更高版本的系统上的应用的行为,为了确保应用的功能不受影响,需在低电耗模式和应用待机模式下对其进行适配;

低电耗模式

        如果用户设备未连接电源、处于静止状态一段时间且屏幕关闭,设备就会进入低电耗模式。在低电耗模式下,系统会尝试通过限制应用对网络的访问以及对CPU的使用来节省电量,还可以限制应用的一些同步处理以及对系统闹铃的使用。

        系统会定期退出低电耗模式一会儿,好让应用完成其推迟的活动,在退出低电耗模式的这个时间内,系统会运行所有待处理的同步、作业并允许应用访问网络。

                                 图 1.低电耗模式提供了定期维护时段,可供应用使用网络并处理待定作业。

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

        一旦用户移动设备、打开屏幕或者连接到充电器的时候,系统就会退出低电耗模式,并且所有应用都会恢复正常。

低电耗模式限制

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

1、暂停访问网络。

2、系统将忽略wake locks

3、标准AlarmManager闹铃(包括setExact()setWindow())推迟到下一维护时段。如果您需要设置在低电耗模式下触发的闹铃,请使用setAndAllowWhileIdle()setExactAndAllowWhileIdle()。一般情况下,使用setAlarmClock()设置的闹铃将继续触发 — 但系统会在这些闹铃触发之前不久退出低电耗模式。

4、系统不执行 Wi-Fi 扫描。

5、系统不允许运行同步适配器

6、系统不允许运行JobScheduler

应用待机模式

        应用待机模式允许系统判定当用户未主动使用应用时,该应用是处于空闲状态的。当用户有一段时间未使用应用时,系统便会做出判定。以下条件系统均不会认为应用处于空闲状态:

1、用户显式启动应用。

2、应用当前有一个进程位于前台(表现为 Activity 或前台服务形式,或被另一 Activity 或前台服务占用)。

3、用户可在锁屏或通知栏中看到的通知。

4、系统应用。

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

在设备空闲时使用 FCM 与您的应用交互

        Firebase Cloud Messaging (FCM)是一项云端至设备的服务,允许您在后端服务与运行在Android 设备上的应用之间实时进行下游消息传递。FCM 提供了单一持久的云连接,所有需要实时传递消息的应用均可共享此连接。此共享连接使多个应用无需消耗电池即可维持自身单独的持久连接,避免快速耗尽电池,从而显著优化电池消耗。 因此,如果应用需要与后端服务进行消息传递集成,Google强烈建议尽量使用FCM,而非维持自身持久的网络连接。

        FCM 经过优化,可将高优先级 GCM 消息用于低电耗模式和应用待机模式。FCM 高优先级消息允许您可靠地唤醒应用访问网络,即使用户设备处于低电耗模式或应用处于应用待机模式也不例外。 在低电耗模式或应用待机模式下,系统将传递消息并允许应用临时访问网络服务和部分唤醒锁,然后将设备或应用恢复到空闲状态。

        高优先级 FCM 消息不会影响低电耗模式,也不会影响任何其他应用的状态。这意味着您的应用可以使用这些消息进行有效的通信,同时尽可能减少对整个系统和设备的电池影响。

        作为一项常规最佳做法,如果您的应用需要下游消息传递,则应使用 FCM。如果您的服务器和客户端已经使用 FCM,请确保你的服务对关键消息使用高优先级消息,因为即使设备处于低电耗模式,这也会可靠地唤醒应用。

加入白名单的可接受用例

        下表重点介绍了请求加入或目前位于电池优化豁免白名单中的可接受用例。 通常情况下,除非低电耗模式或应用待机模式破坏了应用的核心功能,或者由于技术方面的原因而导致您的应用无法使用 FCM 高优先级消息,否则您的应用不应出现在白名单上。

        如需了解详细信息,请参阅对其他用例的支持


对其他用例支持

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

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

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

1、应用可以触发ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGSIntent,让用户直接进入Battery Optimization,他们可以在其中添加应用。

2、具有REQUEST_IGNORE_BATTERY_OPTIMIZATIONS权限的应用可以触发系统对话框,让用户无需转到“设置”即可直接将应用添加到白名单。应用将通过触发ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONSIntent 来触发该对话框。

3、用户可以根据需要手动从白名单中移除应用。

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

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

推荐阅读更多精彩内容