Android中间层分析1.【AMS】进程的启动-概述

我们知道进程的启动,最终都会进入到startProcessLocked函数中,如图我们看下有几种情况

Android中间层分析1.【AMS】进程的启动-概述
首先们关注有四个startProcessLocked接口重载的情况。但是他们最终都会调到统一的startProcessLocked。也就是最末尾的函数。

下面一一介绍几种进程启动的情况:
1、LocalService.startIsolatedProcess---->ams.startIsolatedProcess
ams为应用提供的local service 服务。启动一个孤立的进程。
2、ams.bindBackupAgent
ams为备份应用特殊进程,提供的服务。在android4.4之前这个接口还产生过一个严重的漏洞。具体是怎么应用这个漏洞的大家可以百度。
3、ams.getContentProviderImpl、BroadcastQueue.processNextBroadcast、ActivityStackSupervisor.startSpecificAcitivityLocked 和 ActiveServices.bringUpServiceLocked
这个就是四大组件了。我们后面会分析到各个组件启动的过程。
4、ams.attachApplication
应用在启动activityThead和建立appcationThread过程中对进程的启动
5、ams.cleanUpApplicationRecordLocked
在清除一些应用进程的过程中,会对一些特殊的应用,一般是presistent的应用进行重启。
6、ams.finishBooting
在系统启动完成前,有些应用进程想要起来,会加入到holdOnProcess 列表中,系统启动完成后,会统一对这些应用进行启动
7、addAppLocked
也是对presistent的应用特殊处理。