为什么Android5.0系统之后的应用都会比之前的启动要快?

举报
yd_221104950 发表于 2020/12/04 00:47:09 2020/12/04
【摘要】 首先看一下Android系统的层次架构 层次描述应用层(Systeml Apps)系统内置的和非系统级的应用程序都在这一层,都是用Java语言编写的,负责与用户进行直接交互。应用框架层(Java API Framework)为开发应用层的程序提供了所需要的API,这一层也是用Java语言编写的系统运行库层(Native):(1)C/C++程序库 (2)Android运...

首先看一下Android系统的层次架构

层次 描述
应用层(Systeml Apps) 系统内置的和非系统级的应用程序都在这一层,都是用Java语言编写的,负责与用户进行直接交互。
应用框架层(Java API Framework) 为开发应用层的程序提供了所需要的API,这一层也是用Java语言编写的
系统运行库层(Native):(1)C/C++程序库 (2)Android运行时库 C/C++程序库通过应用构架层向应用层的程序提供服务,换言之,应用层要通过应用框架层来调用C/C++程序库的服务;Android运行时库请看下文的介绍
硬件抽象层(HAL) 这一层是位于操作系统内核与硬件电路之间的接口层
Linux内核层(Linux Kernel) Android的核心系统服务基于Linux内核,在此基础上添加了部分Android专用的驱动。系统的安全性、内存管理、进程管理、网络协议栈、驱动模型都依赖于该内核

了解android系统架构的基本情况后,我们现在来回答文章的主题。
Android5.0系统之后,Android运行时库有了很大的变化,这一点变化让应用程序的启动变得更快了。我们来看看Android运行时库到底改变了什么?

android 运行时库又分为核心库和虚拟机部分。核心库主要提供了Java语言核心库的大多数功能,正因为有核心库的存在,所以开发者才可以使用Java语言编写Android应用程序。虚拟机部分则在Android 5.0系统之后,由Dalvik换成了ART,这是运行效率得到提高的生要原因。

与JVM相比,Dalvik虚拟机是专门为移动设备定制的。它允许在有限的内存中同时运行多个虚拟机实例,并且是每个Dalvik应用作为一个独立的Linux进程执行。所以独立的进程可以防止在虚拟机崩溃时,所有程序也跟着被关闭的情况发生。所以你现在应该明白,你的android应用程序出现崩溃后,其他的应用程序还在正常运行的原因了吧。

Dalvik中的应用每次运行时,字节码都需要通过即时编译器(Just In Time,JIT)转换为机器码。而ART虚拟机则不是这样,在应用程序被安装时会进行预编译(Ahead Of Time,AOT),将字节码预先编译成机器码并存储在本地,这样应用每次运行时就不需要执行编译了,直接运行机器码就可以了,这就虽运行效率提高的原因啦

谢谢阅读。

文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_40763897/article/details/90018549

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。