源码分析之Activity的启动流程

启动流程:

  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生命周期的调用。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值