ActivityManagerService相关

ActivityManagerService的启动

ActivityManagerService是由SystemServer启动的。
SystemServermain方法中直接调用了run方法。

private void run() {
		....
		// Start services.
        try {
            traceBeginAndSlog("StartServices");
            startBootstrapServices();
            startCoreServices();
            startOtherServices();
            SystemServerInitThreadPool.shutdown();
        } catch (Throwable ex) {
            Slog.e("System", "******************************************");
            Slog.e("System", "************ Failure starting system services", ex);
            throw ex;
        } finally {
            traceEnd();
        }
		....
}
private void startBootstrapServices() {
       
		....
        // Activity manager runs the show.
        traceBeginAndSlog("StartActivityManager");
        // TODO: Might need to move after migration to WM.
        ActivityTaskManagerService atm = mSystemServiceManager.startService(
                ActivityTaskManagerService.Lifecycle.class).getService();
        mActivityManagerService = ActivityManagerService.Lifecycle.startService(
                mSystemServiceManager, atm);
        mActivityManagerService.setSystemServiceManager(mSystemServiceManager);
        mActivityManagerService.setInstaller(installer);
        mWindowManagerGlobalLock = atm.getGlobalLock();
        traceEnd();
		....

        
}

run方法中调用了startBootstrapServices方法, 这个方法里面启动了很多服务, 其中就有ActivityManagerService这个服务。

总体架构

总体架构

由图可以知道ActivityManagerService的体系实现也是一个Binder机制的实现。因为ActivityManagerService与应用程序运行在不同的进程,
所以需要跨进程通信。 ActivityManagerService的作用是管理四大组件的创建,销毁以及生命周期的管理。管理,记录,查询。

启动service的流程

在这里插入图片描述

ContextWrapperContextImpl是典型的装饰者设计模式。 经过一系列方法调用,
最终在ActivityManagerService的方法realStartServiceLocked中调用了Service所在进程的scheduleCreateService方法。
也标志着ActivityManagerService所在进程做的事情已经做完了,事情做完指的是各种校验及记录功能完成。
将交由Service所在进程创建Service对象等等操作。最后通过反射创建对象的代码在ActivityThreadhandleCreateService方法。并在此方法中执行ServiceonCreate方法。Service启动完成了。

activity启动的流程

在这里插入图片描述
流程跟Service是差不多的, 都是先由app所在进程调用ActivityManagerService的方法, ActivityManagerService经过校验和记录之后, 调用app所在进程的方法,创建Activity对象,回调onCreate方法。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值