源码分析之Activity的启动流程

本文详细解析了Android中Activity的启动流程,从调用者进程通过AMS传递信息开始,到新进程中Activity的创建及生命周期的调用结束。涉及Binder机制、Zygote进程、ActivityThread等关键组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

启动流程:

  1. 调用者进程通过AMS这个Framework端Binder将启动另一个Activity的信息传给SystemServer进程。

    源码分析:
    startActivityForResult()
    -> Instrumentation.execStartActivity()
    -> ActivityManagerNative.getDefault()单例模式获取ActivityManagerServer
    -> ActivityManagerServer.startActivity()
    -> ActivityStackSupervisor.startActivityMayWait()
    -> ActivityStack.resumeTopActivitiesLocked()

  2. ActivityStarter处理了这些intent和flag等信息之后,然后交给ActivityStackSupervisior/ActivityStack去处理被调用进程的Activity进栈。如果被调用者进程存在,就会使用ApplicationThread这个Application端Binder通知已存在的被调用者进程启动Activity。如果被调用者进程不存在,就会使用Socket通知Zygote进程fork出一个进程,用来承载即将启动的Activity。

  3. 在新的进程里面会创建ActivityThread对象,完成开启主线程loop、ApplicationThread依附在AMS、初始化Context、Application等工作,并且通过Classload加载Activity,创建Activity对象,完成Activity生命周期的调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值