欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android系统原理

程序员文章站 2022-03-27 22:33:04
整理一些系统原理的知识点:Dalvik虚拟机与JVM有什么区别1.Dalvik 基于寄存器,而 JVM 基于栈。2.基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。3.Dalvik执行.dex格式的字节码,而JVM执行.class格式的字节码。class和dex1.dvm执行的是dex格式文件,jvm执行的是class文件,android程序编译完之后生产class文件。然后dex工具会把class文件处理成dex文件,然后把资源文件和.dex文件等打包成ap...

整理一些系统原理的知识点:

Dalvik虚拟机与JVM有什么区别

1.Dalvik 基于寄存器,而 JVM 基于栈。

2.基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。

3.Dalvik执行.dex格式的字节码,而JVM执行.class格式的字节码。

class和dex

1.dvm执行的是dex格式文件,jvm执行的是class文件,android程序编译完之后生产class文件。然后dex工具会把class文件处理成dex文件,然后把资源文件和.dex文件等打包成apk文件。

2.dvm是基于寄存器的虚拟机,而jvm执行是基于虚拟栈的虚拟机。寄存器存取速度比栈快的多,dvm可以根据硬件实现最大的优化,比较适合移动设备。

3.class文件存在很多的冗余信息,dex工具会去除冗余信息,并把所有的class文件整合到dex文件中。减少了I/O操作,提高了类的查找速度

APP从启动到主页显示经历了哪些过程

1.点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求;

2.system_server进程接收到请求后,向zygote进程发送创建进程的请求;

3.Zygote进程fork出新的子进程,即App进程;

4.App进程,通过Binder IPC向sytem_server进程发起attachApplication请求;

5.system_server进程在收到请求后,进行一系列准备工作后,再通过binder IPC向App进程发送scheduleLaunchActivity请求;

6.App进程的binder线程(ApplicationThread)在收到请求后,通过handler向主线程发送LAUNCH_ACTIVITY消息;

7.主线程在收到Message后,通过发射机制创建目标Activity,并回调Activity.onCreate()等方法。

8.到此,App便正式启动,开始进入Activity生命周期,执行完onCreate/onStart/onResume方法,UI渲染结束后便可以看到App的主界面。

 

本文地址:https://blog.csdn.net/wzj_what_why_how/article/details/107956821