android kitkat(4.4以上)各个版本的特性解析
先看下android官网 API Kitkat(4.4 巧克力)的新特性:
https://developer.android.com/about/versions/android-4.4.html
Lollipop(5.0 棒棒糖)的新特性:
https://developer.android.com/about/versions/android-5.0-changes.html
MarshMallow(6.0 棉花糖)新特性:
https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html
Nougat(7.0 牛轧糖)的新特性:
https://developer.android.com/about/versions/nougat/android-7.0-changes.html
下面我来具体的说一下各个版本的重点更新:
Kitkat(4.4):
1,权限问题
您的应用在 Android 4.4 上运行时无法读取外部存储空间上的共享文件,除非您的应用具有 READ_EXTERNAL_STORAGE
权限。也就是说,没有此权限,您无法再访问 getExternalStoragePublicDirectory()
返回的目录中的文件。但是,如果您仅需要访问
现在,您可以使用新主题背景 Theme.Holo.NoActionBar.TranslucentDecor
和 Theme.Holo.Light.NoActionBar.TranslucentDecor
将系统状态栏设置为部分透明。通过启用透明系统状态栏,您的布局将填充系统状态栏后面的区域,因此,您也必须为不应被系统状态栏覆盖的布局部分启用 fitsSystemWindows
。
如果您要创建自定义主题背景,则将其中某个主题背景设置为父主题背景,或在您的主题背景中添加 windowTranslucentNavigation
和 windowTranslucentStatus
样式属性。
增强的通知侦听器
getExternalFilesDir()
提供的您的应用特有目录,那么,您不需要 READ_EXTERNAL_STORAGE
权限。
您的应用必须使用 <uses-permission>
标记请求下面的新权限才能使用某些新 API:
INSTALL_SHORTCUT 允许应用在启动器中安装快捷键
UNINSTALL_SHORTCUT
允许应用在启动器中卸载快捷键
TRANSMIT_IR
允许应用使用设备的红外线发射器(如果可用)
2,,关于AlarmManager
将您的应用的 targetSdkVersion
设置为“19”或更高版本时,您使用 set()
或 setRepeating()
创建的闹铃将变得不准确。
为提高电源效率,Android 现在批处理在合理的相似时间发生的所有应用的闹铃,以便系统仅唤醒设备一次,而不是多次唤醒设备来处理每个闹铃。
如果您的闹铃没有与精确的时钟时间关联,但您的闹铃仍必须在特定时间范围(例如,在下午 2 点至 4 点之间)触发,那么您可以使用新的 setWindow()
方法,其接受闹铃的“最早”时间以及最早时间之后的一个时间“窗口”,在这个窗口内,系统应触发闹铃。
如果您的闹铃必须固定到一个精确的时钟时间(例如,日历事件提醒),那么您可以使用新的 setExact()
方法。
这个精确的批处理行为仅适用于更新后的应用。如果您已将 targetSdkVersion
设置为“18”或更低版本,那么在 Android 4.4 上运行时,您的闹铃的行为方式和在以前版本上一样。
3,关于状态栏
现在,您可以使用新主题背景 Theme.Holo.NoActionBar.TranslucentDecor
和 Theme.Holo.Light.NoActionBar.TranslucentDecor
将系统状态栏设置为部分透明。通过启用透明系统状态栏,您的布局将填充系统状态栏后面的区域,因此,您也必须为不应被系统状态栏覆盖的布局部分启用 fitsSystemWindows
。
如果您要创建自定义主题背景,则将其中某个主题背景设置为父主题背景,或在您的主题背景中添加 windowTranslucentNavigation
和 windowTranslucentStatus
样式属性。
等等还有其他的重要更新,我只说一些比较常用的
MarshMallow(5.0)
1,ART(Android Runtime)
在 Android 5.0 中,ART 运行时取代 Dalvik 成为平台默认设置。Android 4.4 中已引入处于实验阶段的 ART 运行时。
关于Dalvik和ART的详解和区别可以参考以下文章:
http://blog.csdn.net/luoshengyang/article/details/39256813(老罗的深入分析ART)
http://www.jb51.net/article/88708.htm(区别的概述)
2,通知
包括样式,声音和振动,浮动通知(比如微信和qq的浮动窗口的通知)
3,其他权限问题
MarshMallow(6.0)
1,权限(手动检查和提醒用户)
此版本引入了一种新的权限模式,如今,用户可直接在运行时管理应用权限。这种模式让用户能够更好地了解和控制权限,同时为应用开发者精简了安装和自动更新过程。用户可为所安装的各个应用分别授予或撤销权限。
对于以 Android 6.0(API 级别 23)或更高版本为目标平台的应用,请务必在运行时检查和请求权限。要确定您的应用是否已被授予权限,请调用新增的 checkSelfPermission()
方法。要请求权限,请调用新增的 requestPermissions()
方法。即使您的应用并不以 Android 6.0(API 级别 23)为目标平台,您也应该在新权限模式下测试您的应用。
2,Doze(休眠)
Doze模式下的app的网络连接被断开,闹钟AlarmManager失效,数分钟后应用被杀死(白名单的应用除外)
3,ART
ART 运行时环境现在可正确实现 newInstance()
方法的访问规则。此变更修正了之前版本中 Dalvik 无法正确检查访问规则的问题。如果您的应用使用 newInstance()
方法,并且您想重写访问检查,请调用 setAccessible()
方法(将输入参数设置为 true
)。如果您的应用使用 v7 appcompat 库或 v7 recyclerview 库,则您必须更新应用以使用这些库的最新版本。否则,请务必更新从 XML 引用的任何自定义类,以便能够访问它们的类构造函数。
此版本更新了动态链接程序的行为。动态链接程序现在可以识别库的 soname
与其路径之间的差异(公开错误 6670),并且现在已实现了按 soname
搜索。之前包含错误的 DT_NEEDED
条目(通常是开发计算机文件系统上的绝对路径)却仍工作正常的应用,如今可能会出现加载失败。
现已正确实现 dlopen(3) RTLD_LOCAL
标记。请注意,RTLD_LOCAL
是默认值,因此不显式使用 RTLD_LOCAL
的 dlopen(3)
调用将受到影响(除非您的应用显式使用 RTLD_GLOBAL
)。使用 RTLD_LOCAL
时,在随后通过调用 dlopen(3)
加载的库中并不能使用这些符号(这与由 DT_NEEDED
条目引用的情况截然不同)。
在之前版本的 Android 上,如果您的应用请求系统加载包含文本重定位信息的共享库,系统会显示警告,但仍允许加载共享库。从此版本开始,如果您的应用的目标 SDK 版本为 23 或更高,则系统会拒绝加载该库。为帮助您检测库是否加载失败,您的应用应该记录 dlopen(3)
失败日志,并在日志中加入 dlerror(3)
调用返回的问题描述文本。
4,网络WIFI
此版本对 WLAN API 和 Networking API 引入了以下行为变更。
- 现在,您的应用只能更改由您创建的
WifiConfiguration
对象的状态。系统不允许您修改或删除由用户或其他应用创建的WifiConfiguration
对象。 - 在之前的版本中,如果应用利用带有
disableAllOthers=true
设置的enableNetwork()
强制设备连接特定 WLAN 网络,设备将会断开与移动数据网络等其他网络的连接。在此版本中,设备不再断开与上述其他网络的连接。如果您的应用的targetSdkVersion
为“20”
或更低,则会固定连接所选 WLAN 网络。如果您的应用的targetSdkVersion
为“21”
或更高,请使用多网络 API(如openConnection()
、bindSocket()
和新增的bindProcessToNetwork()
方法)来确保通过所选网络传送网络流量。
4,App Links(APP关联)
安卓6.0加强了软件间的关联,谷歌在现场展示了 一个例子,比如你的手机邮箱里收到一封邮件,内文里有以个Twitter链接,用户点击该链接可以直接跳转到Twitter应用,而不再是网页。
其他通知和改变就不一一详解了,其实主要就是增加了系统的安全性
Nougat(7.0 )
1,多屏多任务
进入后台多任务管理页面,然后按其中的一张卡片,向上推送至顶部即可开启分屏多任务,支持上下和左右分栏,允许两个App
的屏幕占比拖动
2,通知栏消息快捷回复
3,电量和内存上的进一步优化(Doze模式的优化dengdeng)
android kitkat(4.4以上)各个版本的特性解析相关推荐
- Android Q(10.0)版本新特性和兼容性适配
北京时间2019年3月14日Google正式对外发布Android Q Beta 1及预览版SDK,这意味着安卓开发者们又即将迎来一年一度的新版本适配工作了.Android Q 为开发者们带来了许多新 ...
- OpenHarmony 3.1 Beta版本关键特性解析——ArkUI容器类API介绍
(以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点) 刘鑫 容器类,顾名思义就是存储的类,用于存储各种数据类型的元素,并具备一系列处理数据元素的方法.在 ArkUI 开发框 ...
- android 各个版本安全特性
一.Android SDK与API Level Google发布的Android系统习惯以甜点命令,并且首字母以字母顺序表依次排序,对应表如下: 平台版本 API级别 版本代号 发布时间 Androi ...
- Android系统各个版本系统特性整理
闲暇无事,整理下Android各个版本系统特性,以方便后续查看! 1. android 1.1 发布时间:发布于 2008 年9月 2.Andr ...
- Android KitKat
Android KitKat 欢迎使用 Android 4.4 KitKat! Android KitKat 将 Android 所有最具创新.最美妙和最有用的功能推广至全球更多的设备. 本文概述面向 ...
- Android 系统与SDK和JDK版本对照表
首发网址:Android 系统与SDK和JDK版本对照表_IT利刃出鞘的博客-CSDN博客 Android各版本对应的SDK版本 平台版本 SDK版本 版本名称 Android 8.0 26 Oreo ...
- Android从1.0到11版本特性
目录 API对照表 各版本特性 Android的起源: Android 1.0(API 1-4 ) Android 2.0(API 5-10 ) Android 3.0 (API 11-13 ) An ...
- 解决 Android 中出现依赖多个版本支持库的问题
解决 Android 中出现依赖多个版本支持库的问题 参考文章: (1)解决 Android 中出现依赖多个版本支持库的问题 (2)https://www.cnblogs.com/lshare/p/1 ...
- 如何导入别人的android studio项目,解决gradle版本不兼容问题
如何导入别人的android studio项目,解决gradle版本不兼容问题 参考文章: (1)如何导入别人的android studio项目,解决gradle版本不兼容问题 (2)https:// ...
最新文章
- 前端自动化工具 grunt 插件 uglify 的简单使用(一)
- base64加密解密实现方法
- innodb和myisam的区别
- 使用VS进行远程调试
- .net bitmap rgb数据_在3D空间,用点云数据学行人重识别特征
- vue 非template模式_vue-template-compiler 还能这么用
- HBase1.0.0 实现数据增删查
- html中设置负边距的意义,css负边距之详解
- 加载tf模型 正确率很低_深度学习模型训练全流程!
- 操作系统面试知识复习
- OpenCV-图像处理(04、图像操作)
- 计算机网络——数据链路层
- 禁止暴风影音stormtray.exe进程
- php tp5 plugins,thinkphp5(tp5)使用cli模式运行
- 重大福利!优云UEM重磅上线!
- 高速PCB设计中的屏蔽方法
- 【滤波器】7. 带通滤波器
- onselect事件在表单元素中的使用
- css3顺时,CSS3 - 顺时针旋转比逆时针
- 【重磅】云栖社区2017年度内容特辑