-
-
关于 ActivityManagerProxy中attachApplication的疑问
-
-
关于 ActivityManagerProxy中attachApplication的疑问
在看新进程启动时,ActivityThread调用attach函数将binder对象传给AMS时有个疑问
此函数位于 ActivityManagerProxy 中 函数如下
public void attachApplication(IApplicationThread app) throws RemoteException
{
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
data.writeInterfaceToken(IActivityManager.descriptor);
data.writeStrongBinder(app.asBinder());
mRemote.transact(ATTACH_APPLICATION_TRANSACTION, data, reply, 0);
reply.readException();
data.recycle();
reply.recycle();
}
IApplicationThread app 根据老罗和网上的分析应该是 ApplicationThreadProxy对象,
ams通过这个代理对象来和客户端交互
但是跟踪源码发现 app 参数是由下面这句初始化的
ApplicationThread mAppThread = new ApplicationThread();
位于 ActivityThread 成员函数的初始化中,而 ApplicationThread 继承 ApplicationThreadNative,而 ApplicationThreadNative 明显是一个server类型的binder,获取它的代理对象 应该传入一个BinderProxy对象做为参数 并且 调用它的asInterface接口,我并没有看到相应的转化,有人帮忙解惑下面吗?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!