Android版本特性

一、Android L 后 ART替换dalvik

Dalvik是Google公司自己设计用于Android平台的虚拟机
Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。
它可以支持已转换为** .dex格式**的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。
Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。

即Android Runtime
ART 的机制与 Dalvik 不同。在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器(just in time ,JIT)转换为机器码,这会拖慢应用的运行效率,而在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。这个过程叫做预编译(AOT,Ahead-Of-Time)。这样的话,应用的启动(首次)和执行都会变得更加快速。

ART有什么优缺点呢?


优点:
1、系统性能的显著提升。
2、应用启动更快、运行更快、体验更流畅、触感反馈更及时。
3、更长的电池续航能力。
4、支持更低的硬件。
缺点:
1.机器码占用的存储空间更大,字节码变为机器码之后,可能会增加10%-20%(不过在应用包中,可执行的代码常常只是一部分。比如最新的 Google+ APK 是 28.3 MB,但是代码只有 6.9 MB。)
2.应用的安装时间会变长。

tips:现在智能手机大部分都可以让用户选择使用Dalvik还是ART模式。当然默认还是使用Dalvik模式。
用法:设置-辅助功能-开发者选项(开发人员工具)-选择运行环境(不同的手机设置的步骤可能不一样)

Android 各个版本适配:

https://www.jianshu.com/p/bac6cbedf0d3

5.0 (API 21)新特性—2014年(Lollipop)

  1. 全新的Material Design设计风格。
  2. 支持64位ART虚拟机。
    1. 放弃了之前一直使用的Dalvik虚拟机,改用了ART虚拟机,实现了真正的跨平台编译。(todo:弄懂为何)
      • https://www.cnblogs.com/ganchuanpu/p/9321682.html
  3. 引入RecyclerView(todo:它的优点)。
    1. Android ListView与RecyclerView对比浅析
  4. 新增悬挂式Notification。
    1. 相较于普通式和折叠式Notification需要拉下通知中心才可以查看的交互,悬挂式直接显示在屏幕上方,并且焦点不变,仍然在用户操作的界面上,不会打断用户的操作,过几秒会消失。
    2. Android 5.0 支持对Notification设置显示等级的能力。通知黑白图标
  5. 引入更加灵活的Toolbar,取代ActionBar

6.0 (API 23) 新特性—2015年(Marshmallow)

  1. 统一支付标准Android Pay。

  2. 指纹支持。

  3. Doze电量管理。

    1. 手机静止不动一段时间后,会进入Doze电量管理模式,提高续航时间。
  4. APP Links。

    1. 加强了软件间的关联,支持点击链接跳转到对应的App(todo:scheme调起???)
  5. Now on Tap

    1. 长按Home键激活Now on Tap,他会识别当前屏幕上的内容并创建Now卡片。
  6. 【重点】运行时权限管理

    1. targetSdkVersion >= 23。

    2. 分位Normal Permissions和Dangerous Permissions。

    3. ActivityCompat.checkSelfPermissions()请求,低于6.0的版本,次方法默认返回值为PackManager.PERMISSION_GRANTED。

    4. onRequestPermissionsResult()回调结果。

    5. 如果用户选择了『不在询问』,下次则不会弹框,而是直接处理拒绝后的逻辑。

  7. 取消支持 Apache HTTP 客户端

7.0 (API 24)新特性—2016年(Nougat)

  1. 多窗口模式(分屏模式)
    1. 进入多窗口的Activity生命周期变化,会先onDestroy销毁,随后重建,停在onPause状态。
    2. 推出多窗口的Activity生命周期变化,接着上面onPause->onDestroy,随后正常重建。
    3. 禁用多窗口模式:在manifest.xml中配置android:resizeableActivity="false"
  2. Data Server
    1. 一种流量保护机制,启用Data Server后,系统将拦截后台应用的数据使用。
  3. 改进的Java8语言支持。
    1. 支持java8,可以使用lambda表达式等。
  4. 自定义壁纸
    1. 设置壁纸时,可以选择是设置桌面还是锁屏壁纸。
  5. 快捷回复
    1. 在通知中快捷回复。
  6. 快速设置
    1. 下拉通知栏顶部,有edit按钮,可以对菜单进行自定义添加、删除、拖动排序。
  7. 其它:Daydream VR、后台省点、Unicode 9支持和全新的emoji表情符号、Google Assistant。
  8. FileProvider,7.0 的通知栏,改变了样式,增加了小图标,还可以显示通知数

8.0 (API 26) 新特性—2017年(Oreo)

  1. 【重点】通知中心
    1. 所有通知都必须分到一个渠道,即新增NotificationChannel。
  2. 画中画(PIP)支持
    1. 一种特殊的多窗口模式,常用于视频播放。
  3. 自适应启动器图标
    1. 桌面icon在不同的设备型号上显示为不同的形状。
  4. 后台执行限制
    1. 后台service限制。
    2. 广播限制:除了有限的例外情况,应用无法使用清单注册隐式广播。
  5. 后台位置信息限制
    1. 为降低耗电量,后台应用检索用户当前位置信息的频率会得到限制。
  6. 其它:自动填充框架、自动调整TextView的大小、WebView API、多显示器支持
  7. 通知分渠道

9.0 (API 28) 新特性—2018年(Pie)

  1. 全面支持全面屏
    1. 通过DisplayCutout类可以确定非功能区域的位置和形状,这些区域不应显示内容。
  2. 动画
    1. 引入AnimatedImageDrawable类,用于显示GIF和WebP动画图像。
  3. 利用Wi-Fi RTT进行室内定位。
  4. 隐私变更
    1. 限制后台访问设备传感器,限制通过WiFi扫描检索到的信息等。
  5. 其它:机器学习,HDR VP9视频、HEIF图像压缩和Media API、对使用非SDK接口的限制。
  6. 刘海屏幕,强制https请求

10.0 (API 29) 新特性—2019年(Q)

  1. 5G支持。
  2. 支持可折叠设备。
  3. 【重点】暗黑主题
  4. 手势导航。
    1. 全面屏手势操作。
  5. 智能回复。
    1. 通过机器学习预测你在回复消息时可能会说些什么。
  6. 用户隐私。给用户更多应用程序控制权。
    1. 提供仅这一次、应用使用时授权等选择。
  7. ART优化,
    1. 添加了一种垃圾回收机制,节省垃圾回收的时间,帮助在低版本设备上顺畅运行。
  8. 机器学习更新。
  9. 夜间模式,存储 分区

11.0 (API 30)新特性—2020年(R)

  1. 短信 更新进,提供更加友好的交互。
  2. 权限和隐私
    1. 在Android10的用户隐私基础上,新增了位置、麦克风和摄像头的一次性权限许可。
  3. 内置屏幕录制。
  4. 适配不同设备。
    1. 折叠屏支持优化,增加铰链角度传感器API等。
    2. 高刷新率支持。
  5. 网络优化。
    1. 新增『动态计量API』,如果检测到连接到无限5G信号,将可以访问最高质量的视频和图片。
  6. 强制执行存储分区

12.0 (API 31)新特性—2021年(S)

  1. 原生的ImageDecoder支持GIF和WebP格式。
  2. 支持圆角。
    1. Display.getRounderCorner()获取屏幕圆角的详细信息。
  3. 更易用的模糊、色彩滤镜等特效。
    1. View.setRenderEffect(RenderEffect) 将特效直接应用于视图
  4. 限制对MAC地址的访问。
  5. 应用覆盖控制。
    1. 可以控制是否允许在自己的内容上显示这些覆盖图层,调用Window#setHideOverlayWindows(),表明不允许TYPE_APPLICATION_OVERLAY的窗口显示。
  6. 应用无法关闭系统对话框。
    1. 弃用了 ACTION_CLOSE_SYSTEM_DIALOGS intent 操作。
  7. Activity/BroadcastReciver/Service 声明了Filter,则必须显示设置android:exported属性。
  8. 必须为每个PendingIntent设置可变性。
  9. 后台应用无法再启动前台服务。
  10. 请求精确位置,需同时申请 ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION 权限

13.0 (API 33)新特性—2022年(T)

  1. 细分媒体权限:将 READ_EXTERNAL_STORAGE 细分为IAMGES、VIDEO、AUDIO权限(若设置 targetSdk>=33 则此项必需适配!)
  2. WebView调整:废弃setAppCacheEnabled与setForceDark方法;
    (若设置 targetSdk>=33 则此项必需适配!)
  3. 静态广播注册:注册静态广播时,需设置对其他应用的可见性
    (若设置 targetSdk>=33 则此项必需适配!)
  4. 通知权限:新增运行时通知权限:POST_NOTIFICATIONS
    (若设置 targetSdk>=33 则此项必需适配!)
  5. Wi-Fi :新增 NEARBY_WIFI_DEVICES 运行时权限
    (若设置 targetSdk>=33 则此项必需适配!)
  6. 身体传感器后台权限:新增 BODY_SENSORS_BACKGROUND 运行时权限
    (若设置 targetSdk>=33 则此项必需适配!)
  7. 剪切板内容隐藏:新增内容隐藏API
    (根据业务需求,选择性适配!)
  8. 非 SDK 接口的限制
    (若设置 targetSdk>=33 则此项必需适配!

14.0 (API 33)新特性—2022年(T)

  1. 进程只能杀死自己的后台进程

    说明:从Android 14开始,当应用调用 killBackgroundProcesses() 时,该API只能杀死应用自己的后台进程。如果传入其他应用的包名,该方法对其他应用的后台进程没有影响。

  2. 前台服务类型是必填项

    说明:Android 14 为目标平台,则必须指定适当的前台服务类型。与以前的 Android 版本一样,可组合使用多个类型。

    Android 14(U)适配攻略 - 简书

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/755876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java数组的概念及使用

在讲数组之前,先看一个案例。假设下图为学生考试成绩图,如果想要存储该学生的考试成绩,是不是可以定义一个变量进行存储?变量的定义及使用的,可参考链接进行学习。java变量是什么?怎么定义的?有…

MateBook 14s 2023款 集显 触屏(HKFG-16)原厂Win11系统

HUAWEI华为MateBook14s笔记本电脑2023款原装Windows11,恢复出厂开箱状态系统下载 适用型号:HKFG-XX、HKFG-16、HKFG-32 链接:https://pan.baidu.com/s/1GBPLwucRiIup539Ms2ue0w?pwdfm41 提取码:fm41 原厂系统自带所有驱动、…

Nodejs 第五十八章(大文件上传)

在现代网站中,越来越多的个性化图片,视频,去展示,因此我们的网站一般都会支持文件上传。 文件上传的方案 大文件上传:将大文件切分成较小的片段(通常称为分片或块),然后逐个上传这…

C语言技能数(知识点汇总)

C语言技能数(知识点汇总) C 语言概述特点不足之处 标准编程机制 数据类型变量数据类型字符类型整数类型符号位二进制的原码、反码和补码 浮点类型布尔类型 常量字面常量const 修饰的常变量#define定义的标识符常量枚举常量 sizeofsizeof(结构体)不要对 v…

代码随想录算法训练营第28天|93.复原IP地址 |78.子集 |90.子集II

代码随想录算法训练营第28天|93.复原IP地址 |78.子集 |90.子集II 93.复原IP地址 本期本来是很有难度的,不过 大家做完 分割回文串 之后,本题就容易很多了 题目链接/文章讲解:https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B…

React——开发者工具

浏览器插件:谷歌浏览器插件react-devtools 方式1:chrome应用商店添加 方式2:下载安装包放在浏览器上

打靶记录(个人学习笔记)

一、信息收集 1、主机发现 通过nmap对此网段进行扫描,可以确定靶机ip为192.168.189.144 2、端口扫描 确定了靶机ip之后,我们来扫描端口 发现80端口开放,先访问80端口 用插件识别出一些信息 Wappalyzer插件获得信息:Web服务&am…

ThingsBoard Edge 设备控制

文章目录 一、RPC 功能1.服务端 RPC2.客户端 RPC3.MQTT RPC API3.1.服务端RPC3.2.客户端RPC 二、设备控制1.环境准备2.创建设备3.服务端PRC3.1.RPC消息主题3.2.程序源码3.3.创建仪表板3.4.边缘分配仪表板3.5.测试 4.客户端RPC4.1.RPC消息主题4.2.程序源码4.3.规则链4.4.测试 Th…

【Git】error: bad signature 0xb86f1e1 和 bfatal: index file corrupt

一、问题 之前都好好的,今天执行 git add .的时候突然报错 报错原因翻译成中文:索引文件损坏 二、解决方法 方法1: 删除.git隐藏文件夹中的index文件 然后执行 git reset 重新生成index文件 git reset 方法2: 重新从远程克隆…

xinference - 大模型分布式推理框架

文章目录 关于 xinference使用1、启动 xinference设置其他参数 2、加载模型3、模型交互 其它报错处理 - transformer.wte.weight 关于 xinference Xorbits Inference(Xinference)是一个性能强大且功能全面的分布式推理框架。 可用于大语言模型&#xff…

TIMESNET: TEMPORAL 2D-VARIATION MODELINGFOR GENERAL TIME SERIES ANALYSIS

本文整理至https://zhuanlan.zhihu.com/p/606575441这里是清华大学软件学院机器学习组官方公众号(THUML-LAB),欢迎关注我们,获取最新资讯! 本文介绍本组ICLR2023时间序列分析方向的最新工作:TimesNet: Temporal 2D-Variation Mode…

Linux/Ubuntu/Debian从控制台启动程序隐藏终端窗口

如果你想从终端运行应用程序但隐藏终端窗口. 你可以这样做: 在后台运行: 你只需在命令末尾添加一个与号 (&) 即可在后台运行它。 例如: your_command &将 your_command 替换为你要运行的命令。 这将在后台启动该命令&#xff0c…

NSGA-III算法:如何在多目标优化问题中找到最合适的解

当我们面临多个目标函数时,单目标的遗传算法可能无法满足需求。这时,我们可以引入多目标遗传算法。在这种情况下,目标函数可能存在冲突,例如,一个目标函数需要最小化,而另一个目标函数需要最大化。某个目标…

联发科MT8797迅鲲1300T规格参数_MTK5G安卓核心板方案定制

联发科MT8797(迅鲲1300T)平台采用Arm Cortex-A78和Cortex-A55组成的八核架构CPU,以及Arm Mali-G77MC9九核GPU,集成了AI处理器MediaTek APU,支持5G Sub-6GHz全频段和5G双载波聚合,支持1.08亿像素拍照和多镜头组合,以及1…

3.5 RK3399项目开发实录-板载RTLinux系统的使用(wulianjishu666)

STM32F103单片机从零到项目开发程序实例 链接:https://pan.baidu.com/s/1dWNskNinrMk4bxaE-jgHhQ?pwdymn3 1. 介绍 为了满足用户对系统实时性的需求,官方在 SDK 源码的内核基础上支持升级 Linux 到 RTLinux。 我们RTlinux支持有preempt和xenomai两个版…

032—pandas 时间窗口中最多的风向和频数

前言 时间窗口指的是在一段时间内对数据进行分析的时间段,通常是一个连续的时间段,如一小时、一天、一周或一个月等。在分析时间序列数据时,时间窗口的选择通常会影响分析结果和预测精度。 需求: 风向是指风的方向,…

如何与Polytec建立EDI连接?

Polytec Holding AG是一家总部位于奥地利的汽车供应商和塑料加工公司。该公司的业务分为四个部门:塑料,为乘用车和非汽车行业的发动机和内饰提供塑料部件;复合材料,为商用车和乘用车提供外饰和发动机零部件;汽车造型&a…

106 基于消息队列来做 mysql 大数据表数据的遍历处理

前言 最近有这样的一个需求, 我们存在一张 很大的 mysql 数据表, 数据量大概是在 六百万左右 然后 需要获取所有的记录, 将数据传输到 es 中 然后 当时 我就写了一个脚本来读取 这张大表, 然后 分页获取数据, 然后 按页进行数据处理 转换到 es 但是存在的问题是, 前面 还…

前后端项目笔记

前端项目创建 准备工作 nodejs安装 vue cli安装 vue create frontend 最后一个y的话 它会保存 方便下次创建项目 我这是手快敲错了 随自己 前端项目组件及作用 Element-UI引入 安装 npm i element-ui -S main.js中引入 清空路口App.vue 清空Home页面 随便写个按钮 原因…