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应用启动过程浅析

Android平台是为手持内嵌设备而设计的,并且大部分手持设备都使用电池工作,其本身拥有的资源非常有限。所以,手持设备要求内嵌系统平台必须提供一个高效的运行环境,一方面提高设备资源的利用率,另一方面尽...
  • heyetina
  • heyetina
  • 2013年01月08日 17:21
  • 6671

Android 应用程序启动过程分析 (用SysTrace 跟踪分析)

Android 应用程序启动过程分析 Sep 21, 2015 13 minute read 学习并分享 Android 应用启动过程 => 为什么要写这篇文章? 梳理总结 前一段时间...
  • CCJHDOPC
  • CCJHDOPC
  • 2016年10月22日 17:54
  • 1405

Android应用程序的启动过程源码解析—点击图标启动过程

在Android系统中,有两种操作会引发Activity的启动,一种用户点击应用程序图标时,Launcher会为我们启动应用程序的主Activity;应用程序的默认Activity启动起来后,它又可以...
  • qianhaifeng2012
  • qianhaifeng2012
  • 2016年07月27日 16:05
  • 2327

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

在之前的文章中分析了应用程序的安装的过程,里面使用到了PackageManagerService,这里就来说说PackageManagerService的启动过程。启动过程       我们知道安卓应...
  • xueshanhaizi
  • xueshanhaizi
  • 2016年04月20日 12:40
  • 1229

Android应用启动过程浅析

Android平台是为手持内嵌设备而设计的,并且大部分手持设备都使用电池工作,其本身拥有的资源非常有限。所以,手持设备要求内嵌系统平台必须提供一个高效的运行环境,一方面提高设备资源的利用率,另一方面尽...
  • heyetina
  • heyetina
  • 2013年01月08日 17:21
  • 6671

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

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

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

前文简要介绍了Android应用程序的Activity的启动过程。在Android系统中,应用程序是由Activity组成的,因此,应用程序的启动过程实际上就是应用程序中的默认Activity的启动过...
  • Luoshengyang
  • Luoshengyang
  • 2011年08月19日 00:58
  • 302396

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

前面我们在分析Activity启动过程的时候,看到同一个应用程序的Activity一般都是在同一个进程中启动,事实上,Activity也可以像Service一样在新的进程中启动,这样,一个应用程序就可...
  • Luoshengyang
  • Luoshengyang
  • 2011年08月29日 00:59
  • 64835

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

在Android系统中,Activity和Service是应用程序的核心组件,它们以松藕合的方式组合在一起构成了一个完整的应用程序,这得益于应用程序框架层提供了一套完整的机制来协助应用程序启动这些Ac...
  • WingSu
  • WingSu
  • 2012年09月26日 10:35
  • 439

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

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

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