一、加强版的低电耗模式
条件:1未插电源;2屏幕关闭;(N与6.0的区别就在于N在手机非静止时也可进入低电耗模式)
作用过程及方式:1充电状态;2屏幕关闭一定时间;进入一级低电限制:关闭网络,推迟CPU作业。
3在上述基础上再静止一定时间:进入全低电耗模式:扫描PowerManager.WakeLock、AlarmManger、GPS、WIFI的低电耗设置。
在此期间受到限制的应用都会在隔一段时间后的窗口期来执行其推迟的作业工作。
二、后台优化
由于耗电问题,N删除了三项隐式广播
1.CONNECTIVITY_ACTION
单次的网络切换即会导致大多数注册了该监听的应用唤醒并同时处理。
2.ACTION_NEW_PICTURE
3.ACITONG_NEW_VIDEO
单次拍照录像也会导致注册该监听的所有应用唤醒。
修改方式:
1前台应用可以使用BroadcastReciver在主线程监听CONNECTIVITY_CHANGE。无法收到CONNECTIVITY_ACTION。
2无法收到2 3两项广播,及时在N之前的版本
替代方案:
JobScheduler。
三、权限更改
1文件的所有者不能放宽其文件的读写权限。
MODE_WORLD_READABLE/MODE_WORLD_WRITEABLE将抛出SecurityException。(可用原生FILE API来修改,但google强烈反对)
2传递软件包网域外file://URI 可能无法访问。分享私有文件推荐使用FileProvider。
3将下载位置设置为公共位置的旧版本仍然能够使用COLUMN_LOCATION_FILENAME访问其其路径,但强烈反对。访问DownloadManager公开的文件应使用ContentResolver.openfileDescriptor()。
四、应用间共享文件
N禁止应用向外公开file://URI。若要达到应用间共享文件,使用FileProvider,发送content://URI,并授予临时访问权限。
五、无障碍改进
对代码没有太大影响。
六、屏幕缩放
系统可设置屏幕密度。
当设备密度发生改变时:
1. 23以下(含)后台进程讲自动终止(和系统处理OOM一样),前台进程则会收到configurationChanged(就像屏幕方向发生改变)。
2. 面向N的则会收到configurationChanged
本功能基本不需要改变就能支持,但要注意:
1. 你的应用可以在宽度sw320dp的设备充分运行。
2. 注意你与密度有关的缓存资源,建议保存这些资源的元数据来决定是否需要刷新数据
3. 尽量避免使用xp单位
七八九十 设置中的视觉设置,NDK,Android for Work,注释保留
没用到,暂不归纳。
十一、其他注意事项:
1 在N的设备上运行 面向低级别API开发的应用,密度改变时系统依旧终止后台进程,应保证可正常处理此情况,否则用户从最近使用记录中恢复应用时会导致崩溃。使用DDMS终止进程来模拟此情况进行测试。
2.N以上应用可以正常处理密度变化,可改变Setting>Display>Font size随后在最近记录中恢复应用来测试。
3.修复部分主线程网路请求没Exception的BUG
4.Debug.startMethodTracing()输出到共享储存空间的包名目录的特定目录中,不在需要WRITE_EXTERNAL_STORAGE
5.Binder储存发送大数据将引发RuntimeException
6.View未在窗口时发布Runnable任务,该任务将排队到附加到窗口后执行。
7.N上,DELETE_PACKAGES应用调用PackageInstaller.uninstall()返回 STATUS_PENDING_USER_ACTION。