Android8.0有关行为变更小结
来源:互联网 发布:索尼网络签约经销商 编辑:程序博客网 时间:2024/03/29 04:24
前言
Android8.0已经发布,作为开发者还是有必要去看看8.0一些API和系统相关的改动。官方有一个关于Android8.0 行为变更的有关说明,下面是自己的一个小结。
在开始之前要先说清楚一个概念,官方将Android 8.0 行为变更分为两个部分:针对所有 API 级别的应用和针对 Android 8.0 的应用。针对 Android 8.0的应用改动,是该变动只会在targetSdkVersion >=26(8.0)的应用上生效。针对 所有 API 级别的应用改动,是该变动会在所有的应用上生效,和targetSdkVersion无关。
举个例子,Android6.0有一个动态权限的机制改动。该改动只会在targetSdkVersion >=23(6.0)上的应用生效,在targetSdkVersion<23上的应用权限不需要动态申请。
Android 8.0 相关变更
- 后台执行限制改动默认只只针对Android8.0及以上,不过用户可以设置将该改动作用于任何应用。
- 处于后台的应用不在允许创建后台服务了,如果创建会抛出一个IllegalStateException异常。
- 应用进入后台应用时会有一个时间窗,在该时间窗之内应用的后台服务还是在运行且可以创建后台服务,该事件窗口结束之后系统会将后台服务结束。
- 应用在后台可以在任何时候通过NotificationManager.startServiceInForeground()创建前台服务,startService() 不能使用,bindService()没有限制。
- 移除了大部分的隐式广播,只保留了少许隐式广播。保留的隐式广播
- 主要是去除和应用本身无关的广播,例如ACTION_PACKAGE_REPLACED。只针对自己应用的广播还是有效,例如ACTION_MY_PACKAGE_REPLACED。
- 官方建议使用 JobScheduler代替以上大部分需求场景。
- 后台位置限制改动针对所有API级别
- 处于后台的应用每隔几小时接收几次位置更新。
- 前台应用行为不变
- 官方建议使用前台服务、 Geofencing API 的元素(例如 GeofencingApi 接口)保证位置实时性。
- 提醒窗口变更针对Android8.0及以上
- 新增一个Window Type,TYPE_APPLICATION_OVERLAY。
显示在
TYPE_PHONE
TYPE_PRIORITY_PHONE
TYPE_SYSTEM_ALERT
TYPE_SYSTEM_OVERLAY
TYPE_SYSTEM_ERROR
…
这些窗口之上。 - TYPE_APPLICATION_OVERLAY感觉是google 专门用来给开发者做悬浮窗的。
- 新增一个Window Type,TYPE_APPLICATION_OVERLAY。
- WebView
- 应用的 WebView 对象将在多进程模式下运行。网页内容在独立的进程中处理,此进程与包含应用的进程相隔离,以提高安全性。
- Android 自动填充框架提供对自动填充功能的内置支持,因此有关表单数据的保存、清楚、获取方法无效(WebSettings:getSaveFormData() setSaveFormData() 和 WebViewDatabase: clearFormData() hasFormData() )。
- ANDROID_ID
- 对于安装在运行 Android 8.0 的设备上的应用,ANDROID_ID 的值现在将根据应用签署密钥和用户确定作用域。应用签署密钥、用户和设备的每个组合都具有唯一的 ANDROID_ID 值。因此,在相同设备上运行但具有不同签署密钥的应用将不会再看到相同的 Android ID(即使对于同一用户来说,也是如此)
- 权限申请变更只针对Android8.0及以上
- 之前动态申请权限的时候,如果用户同意了某个权限的申请,系统会将该权限同组的所有权限都授予给应用。8.0开始只会授予申请的那个权限,不过之后如果应用在申请之前授权权限同组的权限时,系统会自动授予不会提醒用户进行授权。
- 原生库变动针对 Android 8.0及以上
- 如果原生库包含任何可写且可执行的加载代码段,则不会再加载原生库。
- 集合的处理变动针对 Android 8.0及以上
- 为了利用优化的 List.sort(),在 Android 8.0 中,Collections.sort() 是在 List.sort() 的基础上实现的。
- 其他改动 详见官网
总结
可以看出8.0对后台应用的限制越来越多,对于一些流氓应用(通过系统广播唤醒、在后台启动后台服务等)还是有些作用的,毕竟用户可以通过手动设置将后台限制作用于任何targetSdkVersion的app。不过Google对大厂的相互唤醒还没怎么动手,bat还是照常流氓233。话说过来,个人感觉ios的APNS做的还是比较不错的,希望Google的fcm也加把劲,虽然国内不能用 摊手-_-。
阅读全文
0 0
- Android8.0有关行为变更小结
- Android8.0行为变更Google官方文档
- Broadcasts在Android7.0以及Android8.0中的变更
- Android7.0 之 行为变更
- Android7.0 之 行为变更
- 行为变更
- Android8.0
- Android8.0 PackageManagerService相关 -- APK安装和install 的变更和源码浅析
- Android N 行为变更
- Android 7.0 行为变更
- Android 7.0 行为变更
- Android 7.0 行为变更
- Android O 行为变更
- Android O 行为变更
- Android 7.0 行为变更
- Android 7.0 行为变更
- Android O 行为变更
- Android O 行为变更
- JavaBean 属性copy
- Longest Common Prefix
- Linux(CentOS 7)安装Oracle 11g
- Oracle 11g完整安装(从下载到安装到基本命令使用)
- 达人篇:3.3)六西格玛
- Android8.0有关行为变更小结
- hdu3746—Cyclic Nacklace(kmp周期性质)
- 线段树的应用
- openssl pem 生成公钥和私钥及文件
- Java中的volatile关键字详解及单例模式双检锁问题分析
- 关于项目发布没有端口号,以及项目名
- [Android][第一行代码][第 4 章 Fragment]
- Machine Learning 1 Linear Algebra Review quiz
- Ignite 信息订阅与发布实践