Android应用启动过程浅析

转载 2015年07月10日 09:45:35

 Android平台是为手持内嵌设备而设计的,并且大部分手持设备都使用电池工作,其本身拥有的资源非常有限。所以,手持设备要求内嵌系统平台必须提供一个高效的运行环境,一方面提高设备资源的利用率,另一方面尽可能地加长设备的使用时间。

             Android手机用户与设备的交互无非总结为:打开应用以及切换到下一个应用;为了能有效的减少系统负担,Android在启动新进程(打开新应用)采用了Zygote(孵化)进程。

             Init进程是系统启动后运行在用户空间的首个进程,init进程启动完系统运行所需要的各种守护进程后,启动Zygote进程;Zygote进程启动后,Android的服务与应用程序都有该进程启动运行。下面是一个模拟器的进程启动情况,zygote的进程号是33,它的父进程号是1(init进程);下面的应用的父进程号都是33,说明所有的应用都是由zygote进程生成的。

                     

            谷歌在发布Android平台描述平台特性时讲到:Zygote是Android系统的一个主要特征,通过COW(copy on write)方式对运行在内存中的进程实现了最大程度的服用,并通过库共享有效降低了内存的使用量。

            下面来对Zygote进程孵化新进程的过程做进一步了解:Zygote进程调用fork()函数创建出Zygote' 子进程,子进程Zygote' 共享父进程Zygote的代码区与连接信息。如下图所示,Fork()橙色箭头左边是Zygote进程,右边是创建出的Zygote‘子进程;然后Zygote’ 子进程将执行流程交给应用程序A,Android程序开始运行。新生成的应用程序A会使用已有Zygote父进程的库与资源的连接信息,所以运行速度很快。

                   

            另外,对于上图,Zygote启动后,初始并运行DVM,而后将需要的类与资源加载到内存中。随后调用fork()创建出Zygote' 子进程,接着子进程动态加载并运行应用程序A。运行的应用程序A会使用Zygote已经初始化并启动运行的DVM代码,通过使用已加载至内存中的类与资源来加快运行速度。

相关文章推荐

Android应用程序管理服务启动过程浅析(PackageManagerService)

在之前的文章中分析了应用程序的安装的过程,里面使用到了PackageManagerService,这里就来说说PackageManagerService的启动过程。启动过程       我们知道安卓应...

Android应用程序包解析过程浅析

我在上一篇文件中Android应用程序安装过程浅析粗略分析了一下Android应用程序安装过程,其中有一步说到了apk包的解析,但是没有详细分析,这里我们就来粗略分析一下包的解析过程。流程图执行过程 ...

Android应用程序启动过程源代码分析(2)

Step 9. ActivityStack.startActivityUncheckedLocked         这个函数定义在frameworks/base/services/java/com...

深入理解Dalvik虚拟机- Android应用进程启动过程分析

Android的应用进程启动是apk在manifest里申明的Activity,Service,BroadcastReceiver等组件被调起时而触发的。我们以Activity为例,当点击桌面上的应用...

Android应用程序的Activity启动过程简要介绍

转自: http://blog.csdn.net/luoshengyang/article/details/6685853 在Android系统中,Activity和Service是应用程序的核心...
  • MyArrow
  • MyArrow
  • 2011年11月30日 12:48
  • 2242

Android应用程序启动过程——Launcher源码分析

当我们在Launcher界面单击一个应用程序图标时就会启动一个程序
  • kinbos
  • kinbos
  • 2014年05月09日 14:15
  • 898

Android应用程序启动过程源代码分析

前文简要介绍了Android应用程序的Activity的启动过程。在Android系统中,应用程序是由Activity组成的,因此,应用程序的启动过程实际上就是应用程序中的默认Activity的启动过...

Android应用程序在新的进程中启动新的Activity的方法和过程分析

前面我们在分析Activity启动过程的时候,看到同一个应用程序的Activity一般都是在同一个进程中启动,事实上,Activity也可以像Service一样在新的进程中启动,这样,一个应用程序就可...

收藏------------Android应用程序组件Content Provider的启动过程源代码分析

Android应用程序组件Content Provider的启动过程源代码分析           通过前面的学习,我们知道在Android系统中,Content Provider可以...
  • zbl_zbl
  • zbl_zbl
  • 2012年07月16日 17:44
  • 1045

Android应用程序的Activity启动过程简要介绍和学习计划

在Android系统中,Activity和Service是应用程序的核心组件,它们以松藕合的方式组合在一起构成了一个完整的应用程序,这得益于应用程序框架层提供了一套完整的机制来协助应用程序启动这些Ac...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android应用启动过程浅析
举报原因:
原因补充:

(最多只允许输入30个字)