在Android中提供了很多的**Manager ,当然Activity也有个ActivityManager , 这是处理核心
该图摘自曹文斌blog<Activity Manager框架解析>
分析如下:
ActivityManager存在于用户应用进程中,由用户应用进程调用Activity管理的一些基本信息,但是ActivityManager类并不真正执行这些操作,操作的真正执行在系统进程中的
frameworks/base/services/java/com/android/server/ServerThread.java
启动过程:
ServerThread
-> run()
-> Slog.i(TAG, "Activity Manager");
context = ActivityManagerService.main(factoryTest);
ActivityManagerService.setSystemProcess();
ActivityManagerService作为一个服务在系统启动时被加载
分析一下当用户启动一个Activity , android系统运行流程:
-> this.startActivity(new Intent(A.this , B.class));
-> frameworks/base/core/java/android/app/Activity.java
-> public void startActivity(Intent intent)
-> public void startActivityForResult(Intent intent, int requestCode)
-> frameworks/base/core/java/android/app/Instrumentation.java
-> public ActivityResult execStartActivity() [ ActivityManagerNative.getDefault().startActivity ]
-> frameworks/base/core/java/android/app/IActivityManager.java [ extends frameworks/base/core/java/android/app/ActivityManagerNative.java ]
-> ActivityManagerProxy [ startActivity ]
-> mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0);
-> public boolean onTransact();
-> frameworks/base/services/java/com/android/server/am/ActivityManagerService.java [ extends ActivityManagerNative]
-> startActivity();
-> 剩下的就是ActivityManagerService去维护没一个Activity , 具体我没怎么看清楚,特别希望这个部分再有哪位高手写的更具体一点