移动数据使用成本很高,在并非所有人都能负担得起数据套餐费用的地区尤其如此。Android 用户需要能够减少数据使用量或完全阻止应用使用数据。Android 7.0 版本中的 Data Saver 功能为用户提供了此功能。
Data Saver 功能可以由用户开启或关闭。应用开发者应使用新的 API 来检查 Data Saver 模式是否开启。如果已开启,应用开发者可以通过调整其应用程序以实现低数据或无数据访问来优雅地处理这种情况。
最终用户受益,因为他们将能够控制哪些应用可以在后台访问数据,哪些应用只能在前台访问数据。这确保了在用户控制下开启 Data Saver 时所需的后台数据交换。
实现
由于 Data Saver 是平台中的一项功能,设备制造商在 N 版本中默认获得其功能。在以下位置找到源文件:
packages/apps/Settings/src/com/android/settings/datausage
设置界面
Android 开放源代码项目 (AOSP) 中提供了默认的 Data Saver 设置用户界面。请参阅以下屏幕截图示例。
这些屏幕截图显示了正在使用的 Data Saver 模式。

图 1. 切换 Data Saver 关闭/开启

图 2. 当省电模式和 Data Saver 都开启时

图 3. 应用特定的数据使用屏幕:“设置”>“应用”>“数据使用”

图 4. 快速设置菜单上的 Data Saver 状态
应用
重要提示:设备实施者不应将应用列入白名单。即使他们这样做,用户也可能会将其移除。包括其他应用会迫使用户决定对哪些应用应用 Data Saver。
所有应用开发者都必须采取行动来实现 Data Saver,包括 OEM 和预装应用的运营商。有关检测和监控 Data Saver 状态的应用开发者说明,请参阅 developer.android.com 上的 Data Saver。请参阅以下各节,了解对合作伙伴有帮助的更多详细信息。
为了优化 Data Saver 模式,应用应:
- 移除不必要的图像
- 对剩余图像使用较低分辨率
- 使用较低比特率视频
- 触发现有的“轻量版”体验
- 压缩数据
- 即使 Data Saver 关闭,也要尊重按流量计费与不按流量计费的网络状态
相反,为了更好地配合 Data Saver 工作,应用不应:
- 自动播放视频
- 预取内容/附件
- 下载更新/代码
- 除非后台数据确实是核心功能的一部分,否则不要请求加入白名单
- 将加入白名单视为使用更多带宽的许可
验证
实施者可以通过运行以下 CTS 测试来确保其功能版本按预期工作:
com.android.cts.net.HostsideRestrictBackgroundNetworkTests
此外,adb
命令可用于手动执行测试,首先运行此命令以查看所有可用选项:
adb shell cmd netpolicy
例如,此命令返回白名单应用的 UID:
adb shell cmd netpolicy list restrict-background-whitelist