Android系统原理
整理一些系统原理的知识点:
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