凌宇的Android踩坑路

Android 7.0对开发者会有哪些影响(上)

2017-02-23  本文已影响34人  Orz013

Android N 除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更。

如果您之前发布过 Android 应用,请注意您的应用可能受到这些平台变更的影响。

电池与内存

Android N 包括旨在延长设备电池寿命和减少 RAM 使用的系统行为变更。 这些变更可能会影响您的应用访问系统资源,以及您的系统通过特定隐式 Intent 与其他应用互动的方式。

低电耗模式

Android 6.0(API 级别 23)引入了低电耗模式,当用户设备未插接电源、处于静止状态且屏幕关闭时,该模式会推迟 CPU 和网络活动,从而延长电池寿命。而 Android N 则通过在设备未插接电源且屏幕关闭状态下、但不一定要处于静止状态(例如用户外出时把手持式设备装在口袋里)时应用部分 CPU 和网络限制,进一步增强了低电耗模式。

低电耗模式如何应用第一级系统活动限制以延长电池寿命的图示

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

低电耗模式如何在设备处于静止状态达到一定时间后应用第二级系统活动限制的图示

请注意,激活屏幕或插接设备电源时,系统将退出低电耗模式并取消这些处理限制。 此项新增的行为不会影响有关使您的应用适应 Android 6.0(API 级别 23)中所推出的旧版本低电耗模式的建议和最佳实践,如低电耗模式和应用待机模式的优化中所讨论。 您仍应遵循这些建议(例如使用 Google Cloud Messaging (GCM) 发送和接收消息)并开始安排更新计划以适应新增的低电耗模式行为。

Project Svelte:后台优化

Android N 删除了三项隐式广播,以帮助优化内存使用和电量消耗。 此项变更很有必要,因为隐式广播会在后台频繁启动已注册侦听这些广播的应用。 删除这些广播可以显著提升设备性能和用户体验。

移动设备会经历频繁的连接变更,例如在 Wi-Fi 和移动数据之间切换时。 目前,可以通过在应用清单中注册一个接收器来侦听隐式CONNECTIVITY_ACTION广播,让应用能够监控这些变更。 由于很多应用会注册接收此广播,因此单次网络切换即会导致所有应用被唤醒并同时处理此广播。

同理,应用可以注册接收来自其他应用(例如相机)的隐式ACTION_NEW_PICTUREACTION_NEW_VIDEO广播。 当用户使用相机应用拍摄照片时,这些应用即会被唤醒以处理广播。

为缓解这些问题,Android N 应用了以下优化措施:

面向 Android N 开发的应用不会收到CONNECTIVITY_ACTION广播,即使它们已有清单条目来请求接受这些事件的通知。 在前台运行的应用如果使用BroadcastReceiver请求接收通知,则仍可以在主线程中侦听CONNECTIVITY_CHANGE。

应用无法发送或接收ACTION_NEW_PICTUREACTION_NEW_VIDEO广播。此项优化会影响所有应用,而不仅仅是面向 Android N 的应用。

如果您的应用使用任何 Intent,您仍需要尽快移除它们的依赖关系,以正确适配 Android N 设备。 Android 框架提供多个解决方案来缓解对这些隐式广播的需求。

如需了解有关 Android N 中后台优化以及如何改写应用的详细信息,请参阅https://developer.android.com/topic/performance/background-optimization.html

待续

上一篇下一篇

猜你喜欢

热点阅读