[toc] 前几天,Android I/O大会在上海举办,Google中国在B站上传了一个Android开发最新技术概览的视频,里面讲解到了Android 十、Jetpack、Android Studio等新技术和黑科技,忽然发现本身不太了解各个Android系统版本的特性和发布的功能点,因而查看了Android开发者官方文档整理并总结各个系统版本的差别。android
版本 | 特色 |
---|---|
Android 4.4 KitKat | 一、NFC功能 二、传感器 三、截屏和视频录制 四、全屏沉浸式模式 |
Android 5.0 Lollipop | 一、Material Design 二、改善通知(锁屏也能显示通知) 三、静态编译与动态编译同时使用 |
Android 6.0 Marshmallow | 一、运行时权限(动态权限) 二、低耗电模式和待机模式 三、静态编译与动态编译同时使用 四、文本选择(剪切、复制、全选) |
Android 7 Nougat | 一、应用分屏 二、通知栏快捷回复 三、快速设置 |
Android 8 Oreo | 一、全新的通知(渠道等) 二、自动填充框架 三、画中画(小窗口,播放视频等) 四、自适应图标(圆形、方形图标) |
Android 9 Pie | 一、室内定位 二、刘海屏、凹凸屏的适配 三、多摄像头支持 四、神经网络API的支持 |
Android 10 | 一、可折叠设备的支持 二、暗黑模式 三、5G网络的支持 四、手势导航 五、分享API的更新 六、设备标识码的权限 六、地理位置权限 |
经过主机卡模拟新的NFC功能
Android 4.4经过主机卡模拟(HCE)进行基于NFC的安全交易、支付、卡存取、过境通行证和其余自定义服务引入新的平台支持。apache
打印框架
Android 应用能够经过 WLAN 或云托管服务(例如 Google 云打印)打印任何类型的内容。在支持打印的应用中,用户能够发现可用的打印机,更改纸张尺寸,选择要打印的特定页面,打印几乎任何种类的文档、图像或文件。设计模式
存储访问框架
新的存储访问框架让用户可以在其全部首选文档存储提供程序中方便地浏览并打开文档、图像以及其余文件。用户能够经过易用的标准 UI,以统一方式在全部应用和提供程序中浏览文件和访问最近使用的文件。api
低功耗传感器缓存
传感器批处理:Android 4.4 针对硬件传感器批处理引入平台支持,这是一项新的优化功能,能够显著下降传感器持续活动所消耗的电量。安全
步测器和计步器:Android 4.4 还增长对了两种新的复合传感器 — 步测器和计步器 — 的平台支持,它们让您的应用能够在用户行走、跑步或攀爬楼梯时跟踪步数。这些新的传感器在硬件中实现,以下降耗电量。bash
短信提供程序
若是您开发使用短信或彩信的消息传递应用,如今您可使用共享短信提供程序和新的 API 管理您的应用的消息存储和检索。新的短信提供程序和 API 定义了一个适用于全部短信或彩信处理应用的标准交互模式。网络
开发漂亮应用的新方式架构
全屏沉浸式模式:您的应用能够利用设备屏幕上的每个像素显示内容和捕获触摸事件。Android 4.4添加了新的全屏沉浸模式,让您能够在手机和平板上建立从一个边缘延伸到另外一个边缘的全出血 UI,隐藏全部系统 UI,例如状态栏和导航栏。它适用于鲜艳的视觉内容,例如照片、视频、地图、书本和游戏。
在新模式中,系统UI保持隐藏状态,即便在用户与您的应用或游戏交互时,您能够从屏幕上的任何位置(甚至在系统栏占据的其余位置)捕获触摸事件。这是您在应用或游戏中建立更大、更加丰富和更加沉浸式的UI并减小视觉分散的绝佳方式。
为确保用户在全屏沉浸模式中始终能轻松、一致地访问系统UI, Android 4.4 支持新的手势。如今,在沉浸模式中,从屏幕顶部或底部边缘滑动手指能够显示系统 UI。
要返回沉浸模式,用户能够触摸栏界限以外的屏幕或等待一小段时间,让栏自动隐藏。为提供一致的用户体验,新的手势还与以前隐藏状态栏的方法配合使用。app
用于动画场景的转场框架:利用此转场框架,您能够定义场景、典型视图层次和转场,它们描述如何在用户进入或退出场景时制做场景动画或转换场景。您可使用多种预约义的转场类型,根据特定属性(例如布局界限或可见性)制做场景动画。还有一种自动转场类型,能够在场景切换时自动淡出淡入、移动视图和调整视图大小。此外,您能够定义自定义转场,为对您的应用最为重要的属性制做动画,并且您能够在必要时插入您本身的动画样式。
透明系统UI样式:要使内容发挥最大做用,您如今可使用新的窗口样式和主题请求透明系统 UI,包括状态栏和导航栏。为确保导航栏按钮或状态栏信息清晰可辨,在系统状态栏后面显示微妙的渐变效果。典型用例是须要显示出壁纸的应用。
新的媒体功能
屏幕录制:如今,能够轻松地从 Android 设备直接对应用制做高质量视频。 Android 4.4 添加了对屏幕录制的支持,提供屏幕录制实用程序,让您可以在经过 USB 链接到 Android SDK 环境的设备上启动和中止录制。这是一种为应用、测试材料、营销视频等建立演示和教程的绝佳新方式。
Material Design
提供扩充的UI工具包,便于在应用中集成新的设计模式。 新增的三维视图容许设置Z维度来让视图元素升高偏离视图层次并投射实体阴影。
ART运行时
Android在全新的ART运行时上独占运行,这个全新开发的运行时支持混合使用预先编译(AOT)代码、即时编译(JIT)代码和解析代码。它支持 ARM、x86 和 MIPS 架构,并全面兼容 64 位。
ART 可改善应用性能和响应速度。高效的垃圾收集可减小 GC 事件的暂停次数和持续时间,让事件可以充分适应垂直同步窗口,以免您的应用发生跳帧。ART 还能经过动态转移内存来优化前台使用的性能。
通知
改善通知栏,在锁屏状态下也能接收到通知,在来电状态下能出如今抬头通知中。
屏幕采集和屏幕共享
运行时权限
用户能够直接在运行时管理应用权限。这种模式让用户可以更好的了解和控制权限。同时为应用开发者精简了安装和自动更新过程。用户可为所安装的各个应用分别授予或撤销权限。
低电耗模式和应用待机模式
取消支持Apache HTTP客户端 Android 6.0 版移除了对 Apache HTTP 客户端的支持。建议使用HttpURLConnection。若是继续使用Apache HTTP API,就先在build.gradle文件中声明编译时依赖项:
android {
useLibrary 'org.apache.http.legacy'
}
复制代码
文本选择 如今,当用户在您的应用中选择文本时,您能够在一个浮动工具栏中显示“剪切”、“复制”和“粘贴”等文本选择操做。其在用户交互实现上与为单个视图启用上下文操做模式中所述的上下文操做栏相似。
运行时
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) 调用返回的问题描述文本。要详细了解如何处理文本重定位,请参阅此指南。
多窗口支持(原生分屏)
在运行 Android 7.0 的手机和平板电脑上,用户能够并排运行两个应用,或者处于分屏模式时一个应用位于另外一个应用之上。用户能够经过拖动两个应用之间的分隔线来调整应用。
通知加强功能
最大的改变是能够在通知栏上直接对通知进行回复。
配置文件知道的JIT/AOT编译
在Android 7.0中,添加了即时(JIT)编译器,对ART进行代码分析,让它能够在应用运行时持续提高Android应用的性能。JIT编译器对Android运行组件当前的Ahead of Time(AOT)编译器进行了补充,有助于提高运行时性能,节省存储空间,加快应用更新和系统更新速度。
配置文件指导的编译让 Android 运行组件可以根据应用的实际使用以及设备上的状况管理每一个应用的 AOT/JIT 编译。例如,Android 运行组件维护每一个应用热方法的配置文件,而且能够预编译和缓存这些方法以实现最佳性能。对于应用的其余部分,在实际使用以前不会进行编译。
除提高应用的关键部分的性能外,配置文件指导的编译还有助于减小整个 RAM 占用,包括关联的二进制文件。此功能对于低内存设备很是尤为重要。
Android 运行组件在管理配置文件指导的编译时,可最大程度下降对设备电池的影响。仅当设备处于空闲状态和充电时才进行编译,从而能够经过提早执行该工做节约时间和省电。
随时随地低电耗模式
Android 6.0 推出了低电耗模式,即设备处于空闲状态时,经过推迟应用的 CPU 和网络活动以实现省电目的的系统模式,例如,设备放在桌上或抽屉里时。如今,在 Android 7.0 中,低电耗模式又前进了一步,随时随地能够省电。只要屏幕关闭了一段时间,且设备未插入电源,低电耗模式就会对应用使用熟悉的 CPU 和网络限制。这意味着用户即便将设备放入口袋里也能够省电。
Quick Settings Tile API
“快速设置”一般用于直接从通知栏显示关键设置和操做,很是简单。在 Android 7.0 中,咱们已扩展“快速设置”的范围,使其更加有用更方便。咱们为额外的“快速设置”图块添加了更多空间,用户能够经过向左或向右滑动跨分页的显示区域访问它们。咱们还让用户能够控制显示哪些“快速设置”图块以及显示的位置 — 用户能够经过拖放图块来添加或移动图块。
号码屏蔽、来电过滤
通知
在Android 8.0中,从新设计通知:
通知渠道:Android 8.0中引入了通知渠道,其容许您为要显示的每种通知类型建立用户可自定义的渠道。用户界面将通知渠道称之为通知类别。
通知标志:Android 8.0 引入了对在应用启动器图标上显示通知标志的支持。通知标志可反映某个应用是否存在与其关联、而且用户还没有予以清除也未对其采起行动的通知。通知标志也称为通知点。
休眠:用户能够将通知置于休眠状态,以便稍后从新显示它。从新显示时通知的重要程度与首次显示时相同。应用能够移除或更新已休眠的通知,但更新休眠的通知并不会使其从新显示。
通知超时:如今,使用 setTimeoutAfter() 建立通知时您能够设置超时。您可使用此函数指定一个持续时间,超过该持续时间后,通知应取消。若是须要,您能够在指定的超时持续时间以前取消通知。
背景颜色:您如今能够设置和启用通知的背景颜色。只能在用户必须一眼就能看到的持续任务的通知中使用此功能。例如,您能够为与驾车路线或正在进行的通话有关的通知设置背景颜色。您还可使用 Notification.Builder.setColor() 设置所需的背景颜色。这样作将容许您使用 Notification.Builder.setColorized() 启用通知的背景颜色设置。
消息样式:如今,使用 MessagingStyle 类的通知可在其折叠形式中显示更多内容。对于与消息有关的通知,您应使用 MessagingStyle 类。您还可使用新的 addHistoricMessage() 函数,经过向与消息相关的通知添加历史消息为会话提供上下文。
自动填充框架
账号建立、登陆和信用卡交易须要时间而且容易出错。在使用要求执行此类重复性任务的应用时,用户很容易遭受挫折。Android 8.0 经过引入自动填充框架,简化了登陆和信用卡表单之类表单的填写工做。在用户选择接受自动填充以后,新老应用均可使用自动填充框架。
画中画模式
Android 8.0容许以画中画 (PIP) 模式启动操做组件。PIP 是一种特殊的多窗口模式,最经常使用于视频播放。目前,PIP模式可用于 Android TV,而Android 8.0 则让该功能可进一步用于其余 Android 设备。
当某个Activity处于PIP模式时,它会处于暂停状态,但仍应继续显示内容。所以,您应确保您的应用在onPause()处理程序中进行处理时不会暂停播放。相反,您应在onStop()中暂停播放视频,并在onStart()中继续播放。
自适应图标
Android 8.0 引入自适应启动器图标。自适应图标支持视觉效果,可在不一样设备型号上显示为各类不一样的形状。好比有些设备应用程序图标是方形,有些是圆形。
统一的布局外边距和内边距
Android 8.0 让您能够更轻松地指定 View 元素的对边使用相同外边距和内边距的情形。具体来讲,您如今能够在布局 XML 文件中使用如下属性:
利用Wifi RTT 进行室内定位 Android 9添加了对IEEE 802.11 mc Wi-Fi协议的平台支持,从而让您的应用能够利用室内定位功能。
在运行 Android 9 且具备硬件支持的设备上,应用可使用 RTT API 来测量与附近支持 RTT 的 Wi-Fi 接入点 (AP) 的距离。 设备必须已启用位置服务并开启 Wi-Fi 扫描(在 Settings > Location 下),同时您的应用必须具备 ACCESS_FINE_LOCATION 权限。
设备无需链接到接入点便可使用 RTT。 为了保护隐私,只有手机能够肯定与接入点的距离;接入点无此信息。
显示屏缺口支持(刘海屏、凹凸屏)
Android 9 支持最新的全面屏,其中包含为摄像头和扬声器预留空间的屏幕缺口。 经过 DisplayCutout 类可肯定非功能区域的位置和形状,这些区域不该显示内容。 要肯定这些屏幕缺口区域是否存在及其位置,请使用 getDisplayCutout() 函数。
多摄像头支持和摄像头更新
在运行 Android 9 的设备上,您能够经过两个或更多物理摄像头来同时访问多个视频流。] 在配备双前置摄像头或双后置摄像头的设备上,您能够建立只配备单摄像头的设备所不可能实现的创新功能,例如无缝缩放、背景虚化和立体成像。 经过该 API,您还能够调用逻辑或融合的摄像头视频流,该视频流可在两个或更多摄像头之间自动切换。
摄像头方面的其余改进还包括附加会话参数和 Surface 共享,前者有助于下降首次拍照期间的延迟,然后者则让摄像头客户端可以处理各类用例,而无需中止并启动摄像头视频流。 咱们还针对基于显示屏的 flash 支持和 OIS 时间戳访问新增了一些 API,用以实现应用级的图像稳定化和特效。
适用于可绘制对象和位图的ImageDecoder
Android 9 引入了 ImageDecoder 类,可提供现代化的图像解码方法。 使用该类取代 BitmapFactory 和BitmapFactory.Options API。
ImageDecoder 让您可经过字节缓冲区、文件或 URI 来建立 Drawable 或 Bitmap。 要解码图像,请首先以编码图像的来源为参数,调用 createSource()。 而后,经过传递 ImageDecoder.Source 对象来调用 decodeDrawable() 或 decodeBitmap(),从而建立 Drawable] 或 Bitmap。 要更改默认设置,请将 OnHeaderDecodedListener 传递给 decodeDrawable() 或 decodeBitmap()。 ImageDecoder 调用 onHeaderDecoded(),以图像的默认宽度和高度(若已知)为参数。 若是编码图像是动画 GIF 或 WebP,decodeDrawable() 将返回 Drawable,它是 AnimatedImageDrawable 类的一个实例。
您可使用不一样的方法来设置图像属性:
经过 ImageDecoder 还能够为圆角或圆形遮罩之类的图像添加复杂的定制效果。 以 PostProcessor 类的一个实例做为参数使用 setPostProcessor(),执行您所需的任何绘图命令。
Neural Networks api 1.1
Android 8.1(API 级别 27)中引入了 Neural Networks API 以加快 Android 设备上机器学习的速度。
统一辈子物识别身份验证对话框
在 Android 9 中,系统表明您的应用提供生物识别身份验证对话框。 该功能可建立标准化的对话框外观、风格和位置,让用户更加确信,他们在使用可信的生物识别凭据检查程序进行身份验证。
Foldables(可折叠设备的UI适配+应用连续性)
基于强大的多窗口支持,Android 10能够跨应用程序窗口扩展多任务处理,并提供屏幕连续性,以便在设备折叠或展开时保持您的应用程序状态。
5G网络
5G承诺提供始终如一的更快速度和更低的延迟,Android 10增长了对5G的平台支持,并扩展了现有的API, 以帮助您利用这些加强功能。
隐私
界面
系统
camerax 兼容到L 设备一致性 使用方便
Jetpack compose 下一代UI工具包、非绑定时、响应式、kotlin优先
Jetpack Security library 基于AES-256GCM提供文件和SharedPreference加密
benchmark library 衡量代码性能、防止常见的测量错误
DataBind优化
view binding android studio 3.6 不要findviewby