低电耗模式
会对闹铃、GPS 和 Wi-Fi 扫描 产生限制.
可参考Optimizing for Doze and App Standby
使用GCM来发送和接受消息
后台优化
Android N 删除了三项隐式广播,隐式广播会在后台频繁启动已注册侦听这些广播的应用。 删除这些广播可以显著提升设备性能和用户体验.
侦听网络变化的主线程广播改为: CONNECTIVITY_CHANGE。
对所有应用都无法 发送和接受 ACTION_NEW_PICTURE 或 ACTION_NEW_VIDEO .
可以使用JobScheduler API ,更多参考后台优化
权限变更
旨在提高私有文件的安全性,
- 仍然可以使用原生 API 或 File API 来修改私有目录,但是不建议使用.
- 使用
file:// URI
,可能会导致接受者无法访问该路径 ,需要使用FileProvider
DownloadManager
不再按文件名分享私人存储的文件,需要使用ContentResolver.openFileDescriptor()
参考阅读:Android7.0须知–应用间共享文件(FileProvider)
文件共享
若要在应用间共享文件,需要发送一项 content:// URI,最好也是使用 FileProvider类
NDK平台库
Android N 做了一些命名空间更改,阻止加载非公开API,会出现一些常见错误
如,UnsatisfiedLinkError
典型修复方法,
1. 使用标准 JNI 函数来替代使用 libandroid_runtime.so 中的 getJavaVM 和 getJNIEnv
2. 使用公开 alternative __system_property_get 来替代使用 libcutils.so 中的 property_get 符号
3. 使用应用本地版本来替代使用 libcrypto.so 中的 SSL_ctrl 符号
注解保留
Android N 在注解可见性被忽略时修复错误,
这些注解包括:
1. VISIBILITY_BUILD:仅应编译时可见
2. VISIBILITY_SYSTEM:运行时应可见,但仅限基本系统
其他重要事项
如果应用是针对更低 API
级别开发而运行在Android N
上,那么在更改显示尺寸,系统将终止此应用进程.
Android N 上的应用应能够正常处理配置变更,包括字体大小的变更
许多平台 API 现在开始检查在 Binder 事务间发送的大负载,ps,Activity.onSaveInstanceState()
存储过多数据时,引发RuntimeException
View 发布 Runnable 任务,在 View 附加到窗口之前,Runnable 任务不会执行
DELETE_PACKAGES 权限的变更,应用尝试删除一个软件包,但另一项应用已经安装了这个软件包,则系统可能要求用户确认