1.了解binder是用来干什么的?
2.应用里面哪些地方用到了binder机制?
3.应用的大致启动流程是怎样的?
4.一个进程是怎么启用binder机制的?
binder是用来跨进程通信的,调用系统服务,启动组件,发广播都会用到binder机制,binder机制是在应用启动过程中启动的。
AMS和应用交互时就用到了binder机制,启用binder机制具体是什么时候呢?
Zygote启动进程时会执行runOnce函数,在子进程中会执行zygoteInit函数,nativeZygoteInit函数中就会启用binder机制。
nativte层
启动binder机制是在ProcessState里,也就是进程启动之后的初始化里做的。
打开binder驱动,映射内存,分配缓冲区,创建binder线程,进入binder Loop处理和返回binder请求。
PoolThread其实是执行线程单例IPCThreadState的joinThreadPool函数
IPCThreadState之前文章也提过,它里面有2个Parcel,一个是mIn,一个是mOut,写入binder驱动会先把数据放入mOut,返回的数据会放到mIn里,然后会循环的去读取和执行请求。
executeCommand函数会根据binder驱动发来的不同指令执行不同的操作。
网友评论