-
先上整理的uml图.大概罗列了一下基本关系
启动调用顺序
1.Activity.startActivity(Intent intent);
2.Activity.startActivityForResult();
3.Instrumentation.execStartActivity();
4.ActivityManagerNative.getDefault() .startActivity();
ActivityManagerNative.getDefault() 就是ActivityManagerService
5.ActivityManagerService.startActivityAsUser) ;
6.ActivityStackSupervisor.startActivityMayWait();
7.ActivityStackSupervisor.startActivityLocked();
8.ActivityStackSupervisor.startActivityUncheckedLocked();
9.ActivityStackSupervisor.resumeTopActivitiesLocked();
10.ActivityStack.resumeTopActivityLocked();
11.ActivityStack.resumeTopActivityInnerLocked();
12.ActivityStackSupervisor.startSpecificActivityLocked();
13.ActivityStackSupervisor.realStartActivityLocked();
14.app.thread.scheduleLaunchActivity();
app.thread 的类型为iApplicationThread,具体实现类是ApplicationThread,ApplicationThread 是ActivityThread的内部类.
15.iApplicationThread.scheduleLaunchActivity(); 中发送了一个message,由 ActivityThread内部的H接受,H是handler的子类.
16.ActivityThread.handleLaunchActivity();
17.ActivityThread.performLaunchActivity();//这里最终完成了Activity对象的创建和启动过程.
先写到这里.留坑等深入学习后在填.