返回
Binder原理(下)之Client与Server解析
Android
2023-10-08 22:33:04
Binder中的Client
Binder中的Client主要负责与Server进行通信,它充当了一个请求发送者。Client通过Binder驱动程序来与Server进行连接,并将请求发送给Server,同时等待Server的回复。Client可以是同一个进程中的另一个线程,也可以是其他进程中的一个组件。
Client的工作流程
- 创建Binder代理对象: Client首先需要创建一个Binder代理对象,这个代理对象是Server端Binder对象的本地表示。Client可以使用Binder驱动程序提供的BinderProxy接口来创建Binder代理对象。
- 通过Binder代理对象发送请求: Client可以通过Binder代理对象向Server端发送请求。请求的内容可以是数据、命令或查询等。
- 接收Server端的回复: Client在发送请求之后,需要等待Server端的回复。Server端的回复可以通过Binder代理对象接收。
- 处理Server端的回复: Client在收到Server端的回复之后,需要对回复进行处理。处理的结果可以是更新UI、存储数据或执行其他操作。
Binder中的Server
Binder中的Server主要负责处理Client的请求,它充当了一个请求接收者。Server通过Binder驱动程序来接收Client的请求,并在处理请求之后将结果返回给Client。Server可以是同一个进程中的另一个线程,也可以是其他进程中的一个组件。
Server的工作流程
- 创建Binder对象: Server首先需要创建一个Binder对象,这个对象是Client端Binder代理对象的本地表示。Server可以使用Binder驱动程序提供的Binder接口来创建Binder对象。
- 注册Binder对象: Server需要将创建的Binder对象注册到ServiceManager中。这样,Client才能通过ServiceManager找到Server端的Binder对象。
- 处理Client的请求: Server在注册Binder对象之后,就可以开始处理Client的请求了。Server可以通过Binder对象接收Client的请求,并在处理请求之后将结果返回给Client。
- 返回处理结果: Server在处理完Client的请求之后,需要将处理结果返回给Client。Server可以通过Binder对象将处理结果返回给Client。