Binder架构(Java层)
2017-02-17 09:40:34 0 举报
Binder架构是Android系统中的一种跨进程通信(IPC)机制,它通过C/S模型实现不同进程之间的数据交互。在Java层,Binder主要通过AIDL(Android Interface Definition Language)定义接口,并使用Binder类进行数据传输。当一个进程需要调用另一个进程的方法时,会创建一个新的线程来处理这个请求,这个线程被称为Binder线程池。Binder线程池中的线程负责将请求发送到目标进程,并将结果返回给调用者。这种机制使得不同进程之间可以高效地进行数据交换,从而实现了跨进程通信。
作者其他创作
大纲/内容
IActivityManager
startActivity()bindService()//......
transact()
由于该BinderProxy对象的存在是为了在驱动层找到对应Service的进程,但是他却没有实现向下通信的接口,所以这里使用装饰者模式,将其包含在一个实现了IActivityManager的类中,该类实现了向下通信的接口
IPCThreadState
startService()
该方法是一个JNI方法,他已经包含了所有必要的信息,如信息是干嘛的,给谁的
客户端拿到了ServiceManager的BinderProxy,则向Binder驱动发起请求,请求获得\"xx服务\
ActivityManagerProxy
startActivity()startService()
下面对使用服务的流程做细致的分析:
使用服务:
Binder架构在Java层所涉及的类
BpBinder
在一个服务进程启动后,到它可以被客户端使用,经历了下面三个步骤:
每个线程只有一个该实例对象
IInterface
对应Service的BinderProxy
注册服务:
mRemote
AMS的BinderProxy对象
获取服务:
该代理对象可以找到目标服务所在进程
ActivityManagerNative
onTransact()
0 条评论
下一页