Android Activity启动流程详解

1.    (Activity类)startActivity()-->Actvity.startActivityForResult()
2.    (Instrumentation类).execStartActivity()
3.    (ActivityManager类)  .startActivity()
4.    (ActivityManagerService类) .startActivity()->startActivityAsUser()
5.    (ActivityStarter类) .startActivityMayWait()->startActivityLocked()->startActivity()->startActivity()
        ->resumeTopActivityInnerLocked()-> startActivityUnchecked()
6.    (ActivityStackSupervisor类).resumeFocuesdStackTopActivityLocked()
7.    (ActivityStack类).resumeTopActivityUncheckedLocked()->resumeTopActivityInnerLocked()//这个方法会去判断是否有Activity处于onResume状态,有的话先让这个Activity执行onPause(),最后启动要启动的Activity
8.    (ActivityStackSupervisor类) .startSpecificActivityLocked()//这个方法会判断要跳转的Activity所在的app是否已经启动,没有的话则需要创建进程启动,有的话走realStartActivityLocked() ->realStartActivityLocked()//这个方法调用了
 app.thread.scheduleLaunchActivity(),app.thread是IApplicationThread在AMS服务进程中的代理对象,最终调用到ApplicationThread的scheduleLaunchActivity()
9.    (ApplicationThread类) .scheduleLaunchActivity()->通过Handler消息LAUNCH_ACTIVITY
10.  (ActivityThread类) .handleLaunchActivity()->performLaunchActivity()
11.  (Instrumentation类) .newActivity()//通过反射创建Activity的实例
12.  (Activity类) .attach()
13.  (Instumentation类) .callActivityOnCreate()
14.  (Activity类) .onCreate()
15.  (Activity类) .performStart()
16.  (Instrumentation类) .callActivityOnStart()
17.  (Activity类) .onStart()
18.  (ActivityThread类) .handleResumeActivity()//这个方法走onResume()生命周期,然后调用WindowManagerImpl.addView,来创建ViewRootImpl。
19.  (WindowManagerImpl类) .addView()
20.  (WindowManagerGlobal类) .addView()//这个方法创建ViewRootImpl,在子线程中更新UI时报错信息就是在ViewRootImpl 中的checkThread()方法中
21.  (ViewRootImpl类) .setView()//在这个方法里执行了requestLayout()函数,说明页面获取了焦点,这个也说明了为什么onResume()后页面才可以交互

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值