三.Activity启动流程-AMS请求Zygote启动进程过程

Activity的启动一般分为普通Activity的启动,根Activity的启动.而根Activity是指应用启动的第一个Activity过程,所以也可以理解为应用的启动过程.

相关内容链接:android系统启动流程

Activity的启动流程大致分为如下四个阶段:

一.应用进程(Launcher)调用ATMS系统进程的过程

二.ActivityTaskManagerService到ApplicationThread的调用过程

三.AMS向Zygote发送启动应用进程的过程

四.ActivityThread启动Activity的过程

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,
   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值