之前看了下startActivity的源码,了解了下他的整个流程
以下都是以SDK25来分析的
MainActivity:
-->startActivity();
Activity:
-->void startActivityForResult()
-->mMainThread.sendActivityResult()//如果上一步返回的结果不为空的话,会走这一步,也就是我们平常的onActivityResult方法
Instrumentation:
-->ActivityResult execStartActivity()
ActivityManagerNative->ActivityManagerProxy:
-->int startActivity()
//以下开始就是执行远端
-->boolean onTransact()
ActivitymanagerService:
-->int startActivity()//注意:是10个参数的那个方法
-->int startActivityAsUser()//11个参数
ActivityStarter:
-->int startActivityMayWait()
-->int startActivityLocked()
-->int startActivityUnchecked()//这个方法里有在清单文件里配置的Activity的启动模式,比如SingleTask等
ActivityStackSupervisor:
-->boolean resumeFocusedStackTopActivityLocked()
ActivityStack:
-->boolean resumeTopActivityUncheckedLocked()
-->boolean resumeTopActivityInnerLocked()
ActivityStackSupervisor:
-->void startSpecificActivityLocked()
-->boolean realStartActivityLocked(r, app, andResume, checkConfig);
ActivityThread:
-->void scheduleLaunchActivity()
-->void handleLaunchActivity()
进入这个方法之后就可以看到我们熟悉的Activity了