android(一)

Process::self()

  1.打开binder 驱动

  2.对返回的fd 使用mmap,为binder开辟内存空间保存数据。

defaultServiceManager();

  1.创建的是Bpbinder,handler = 0。(因为此时service 作为客户端与servicemanager进行交互。Bpbinder-> 客户端, Bbbindr->服务器,Bpbinder是通过handler标识符找到Bbbinder的)

  2.defaultServiceManager返回的是BpServiceManager,它的mRemote的值是Bpbinder,且BpServiceManager实现了IServiceManager的业务逻辑

IPCThreadState:

  1.每个线程都有一个IPCThreadState,每个IPCThreadState:都有一个mIn,mOut.mIn用来接收binder设备的数据,mOut用来存出binder发来数据

为service服务的线程:

  1.startThreadPool 中新创建的线程是通过joinThreadPool读取binder设备,查看是否有请求

  2.主线程也是调用joinThreadPool读取binder设备,查看是否有请求

猜你喜欢

转载自www.cnblogs.com/jobs1/p/12022476.html
今日推荐