ApplicationThread及Activity的创建和启动
ActivityThread 的初始化及其对应的 attach 方法,在thread.attach方法中,ActivityManagerService通过attachApplication方法,将ApplicationThread对象绑定到ActivityManagerService,ApplicationThread是ActivityThread的私有内部类,实现了IBinder接口,用于ActivityThread和ActivityManagerService的所在进程间通信。
ActivityThread的attach方法:
private void attach(boolean system) {
...
if (!system) {
final IActivityManager mgr = ActivityManager.getService();
try {
mgr.attachApplication(mAppThread);
} catch (RemoteException ex) {
throw ex.rethrowFromSystemServer();
}else{
...
}
}
}
ActivityManagerService中的方法:
public final void attachApplication(IApplicationThread thread) {
synchronized (this) {
int callingPid = Binder.getCallingPid();
final long origId = Binder.clearCallingIden

本文探讨了Android中ApplicationThread与Activity的创建和启动过程。在ActivityThread的初始化过程中,通过attach方法将其与ActivityManagerService绑定。ApplicationThread作为ActivityThread的内部类和IBinder实现,用于线程间通信。AMS的attachApplicationLocked方法涉及Application的创建,通过bindApplication调用ApplicationThread的bindApplication,触发Application的onCreate。同时,mStackSupervisor.attachApplicationLocked用于创建Activity,调用scheduleLaunchActivity启动Activity创建。整个流程揭示了Application与Activity的启动顺序和机制。
最低0.47元/天 解锁文章
1559

被折叠的 条评论
为什么被折叠?



