作者: Luiz Gustavo Martins, 合作伙伴开发技术推广工程师,合作伙伴 DevRel 团队
本文为 Android 电量管理 系列连载的第三篇,希望您能在阅读过程中收获设备续航方面的战略洞见和实践指导。
随着近几年来 Android 的不断发展,Google 逐步加强了对于后台执行的优化和限制。为了开发出现代化的 Android 应用,开发者需要学习如何通过最新方式来管理后台任务。
系统如何判定应用处于后台?
在理解后台执行这个概念之前,我们先来看看 Android 系统是如何定义前台应用的。当应用满足以下任意条件时,系统会判断应用处于前台:
- 具有一个可见的 Activity,不论该 Activity 处于 started 或是 paused 状态
- 具有一个 前台服务
- 另一个前台应用已关联至该应用,不论是通过 绑定到它的一个服务 ,还是通过使用它的一个 内容提供程序 。比如,当别的前台应用或者系统绑定了该应用的以下服务时,那么该应用处于前台:
如果以上条件均不满足,应用将被视为处于后台。
后台执行的相关行为变更
在后台运行应用会消耗设备的有限资源,如内存或者电池电量,进而影响用户的使用体验,比如说,后台任务可能会缩短设备的续航时间,或者在用户玩游戏、看视频或拍照时造成系统卡顿。
为了改善续航表现和用户体验,Android 在版本演进的过程中,针对后台执行进行了不同程度的限制,其中包括:
- 低耗电模式和应用待机模式 : 如果设备未插接电源,处于空闲状态一段时间且屏幕关闭,系统会进入低耗电或者待机模式,并对应用行为施加相应限制;
- 后台位置限制 : 对后台应用获取用户当前位置的频率进行限制;
- 后台服务限制 : 限制应用在后台运行服务,并禁止应用通过隐藏/不可见方式调用 CPU 或网络资源;
- 近期新增特性及优化项: (1) 应用待机群组 : 限制非活跃应用对设备资源的调用; (2) 后台限制 : 当系统检测到应用出现不良行为时,系统会向用户询问是否要限制该应用在后台访问设备资源; (3) 省电助手功能优化 。
使用案例及解决方案
开发者在选择后台执行工具前,首先要对应用需求和限制场景有个清晰的了解,我们建议您参照以下流程图,为应用制定最佳的后台决策: