以下简称serviceManager为SM.
SM全局唯一,不管java层还是native层调用SM,最终的target都一样。
java层调用,是通过ServiceManagerNative,构造ServiceManagerProxy代理进行SM的binder调用的,这里binder另一端并没有继承实现ServiceManagerNative,也就是说没有对java层的onTransact回调,而都是在native层完成的。
c++层调用SM,比如getService返回IBinder对象,然后通过interface_cast<IBinder>,然后asbinder,new Bp##Interface(binder),binder.transact->BpBinder.transact->IPCThreadState::self()->transact,进而进入binder驱动的,回调到java层的onTransact。