1.Doze模式更增强大
该模式是在Android6.0中引入的,当用户设备未插电源、处于静止状态屏幕关闭时,该模式会推迟CPU和网络活动,从而增长电池寿命。
在Android_N中对这种模式进行了增强,当设备处于充电状态且屏幕已关闭必定时间后,设备会进入打盹模式并应用第一部分限制:关闭应用网络访问、推迟做业和同步。若是进入打盹模式后设备处于静止状态达到必定时间,系统则会对 PowerManager.WakeLock、AlarmManager 闹铃、GPS 和 Wi-Fi 扫描应用余下的打盹限制。不管是应用部分仍是所有打盹限制,系统都会唤醒设备以提供简短的维护时间窗口,在此窗口期间,应用程序能够访问网络并执行任何被推迟的做业/同步。android
这种状况倒也好办,要么就是让用户将本身的的应用加入白名单,
或则在代码中使用Intent的方式跳转到设置页面,让用户去设置;
Google推荐咱们使用Schedule的方式来管理咱们的任务,咱们能够设置让这些任务在特定的时候才去执行,好比将任务设置运行在充电或则无限制的时候运行,以下就是加入一个网络无限制的任务:
Google在API 23中为咱们加入了一个新的Action,咱们能够经过调用这个Action跳转到指定页面指导用户设置白名单:
在Doze模式中还有一种Standby的模式,这个模式相对更严格,若是对于及时通讯的软件在未加入白名单的状况下,处于该模式不能收到及时的提示,必须从该模式恢复才能收到,所以须要特别注意,咱们能够从google的官方文档当中查到进入该模式的ADB指令:
将第二条指令中的true改成false便可恢复,这个便于开发和测试。
2.禁止一些广播的行为
在以前的Android系统中,咱们开启一个监听事件的广播后,程序在事件触发的时候就会触发咱们的广播,并且不值一个程序会收到通知,因此在Android_N中对CONNECTIVITY_ACTION、ACTION_NEW_PICTURE和ACTION_NEW_VIDEO三个广播进行了处理。
a) 面向 Android N 开发的应用不会收到 CONNECTIVITY_ACTION 广播,即便它们已有清单条目来请求接受这些事件的通知。在前台运行的应用若是使用 BroadcastReceiver 请求接收通知,则仍能够在主线程中侦听 CONNECTIVITY_CHANGE。
b) 应用没法发送或接收 ACTION_NEW_PICTURE 或 ACTION_NEW_VIDEO 广播。此项优化会影响全部应用,而不只仅是面向 Android N 的应用。
将来的 Android 版本还可能会弃用其余隐式广播以及未绑定的后台服务。有鉴于此,您应避免依赖在清单文件中声明的接收器来侦听隐式广播或删除此依赖关系,以及避免或删除对后台服务的依赖关系。
3.权限机制的更改
Android N 作了一些权限更改,包括用户账户权限和向外部存储设备写入信息的新权限,这些更改可能会影响您的应用。下面概要列出了预览版中已发生更改的权限。
GET_ACCOUNTS(已弃用)
GET_ACCOUNTS 权限现已弃用。对于面向 Android N 的应用,系统将忽略此权限。
下面咱们就来着重的谈一谈关于这个权限修改,从Android6.0开始Google引入了权限动态申请的机制,在以前的版本中,咱们申请权限都是一次性在应用的Manifest文件中将咱们程序所须要的权限,在用户安装App的时候一块儿向用户申请,这样会形成要么用户没有仔细看就直接赞成安装了,为后期带来安全隐患,要么用户不一样意应用程序没法安装,可是对于一个app来讲,可能有的权限不是咱们必须的,所以Google在Android6.0中就引入了动态申请权限的机制。
该机制面向于6.0以上的版本,而且在6.0中将targetVersion指定为23,否者效果和以前的版本同样。
咱们就拿<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />这个向外部存储卡进行写操做的权限来举例。
当咱们须要向外部存储卡进行写操做的时候,咱们须要遵循以下的步骤:
a).查询是否具备该权限:
这里面须要注意的是,为了向下兼容,ContextCompat和ActivityCompat的导入的是support.v4包下的
hasPerMission就是查询的返回值,若是返回true就表示咱们已经具备了权限,能够直接进行操做,若是是false的话,咱们就须要向用户动态的申请写的权限了,以下:
这个函数相似于咱们经常使用的startActivityForResult的方法,它会触发一个回调,其中REQUEST_WRITE_CODE就是咱们自定义的请求码。
b).处理请求的回调安全
全文连接:
http://bbs.utest.qq.com/?p=760&uid=1a87084a012d4fe59dd416e3ce2228be网络
腾讯优测(http://utest.qq.com)是专业的移动云测试平台,提供【兼容性自动化测试】【云手机】【漏洞检测】等多维度测试服务。app