Activity的启动一般分为普通Activity的启动,根Activity的启动.而根Activity是指应用启动的第一个Activity过程,所以也可以理解为应用的启动过程.
相关内容链接:android系统启动流程
Activity的启动流程大致分为如下四个阶段:
二.ActivityTaskManagerService到ApplicationThread的调用过程
Activity启动过程涉及到进程之间的关系:
三.AMS向Zygote发送启动应用进程的过程
熟悉系统启动流程的可以知道,Zygote进程的Java框架层会创建一个server端的Socket,
而这个Socket就是用来等待AMS请求Zygote来创建新的应用进程用.
Zygote进程通过fock自身创建应用进程,这样应用进程就获得Zygote进程在启动时 创建的虚拟机实例了,
除此之外还创建了Binder线程池和消息循环Looper,这样 应用进程就可以使用Binder进行进程间通信以及处理消息了
类名: com.android.server.am.ActivityManagerService.LocalService:
1. startProcess()
在上述流程序号14中,在startSpecificActivityLocked()方法中调用了ActivityManagerService.LocalService的startProcess()来请求启动新的应用进程.
/**
* Activity manager local system service interface.
*
* @hide Only for use within the system server.
*/
public abstract class ActivityManagerInternal {
/** Starts a given process. */
public abstract void startProcess(String processName, ApplicationInfo info,
boolean knownToBeDead, String hostingType, ComponentName hostingName);
}
public class ActivityManagerService extends IActivityManager.Stub
implements Watchdog.Monitor, BatteryStatsImpl.BatteryCallback {
// ... ...
public final class LocalService extends ActivityManagerInternal {
@Override
public void startProcess(String processName, ApplicationInfo info,