Android - Binder机制 - client和普通service交互
2013-05-08 17:39
295 查看
以下几篇文章是较深入分析binder机制。
目录
1. Android - Binder机制 - ServiceManager
2. Android - Binder机制 - 普通service注册
3. Android - Binder机制 - 获得普通service
4. Android - Binder机制 - client和普通service交互
5. Android - Binder机制 - Binder框架总结
6. Android - Binder机制 - ProcessState和IPCThreadState
7. Android - Binder机制 - 驱动
Android - Binder机制 - client和普通service交互
和前两篇结构基本一致,只说明特别的几个地方:
1. Camera客户端执行startPreview()是通过BpCamera来完成的;
2. ICamera定义了摄像头操作的接口,它是抽象类,BpCamera是客户端的实现;
3. CameraService: :Client是服务端,每个Camera客户端对应一个CameraService: :Client;
4. BnCamera服务端对ICamera的实现;
5. BBinder在之前没见过,它服务端对IBinder的实现,主要接口是onTransact();
6. 这个图BpBinder和BBinder应该各对应一组ProcessState和IPCThreadState,因为它们存在于每个binder进程,不管是客户端还是服务端;
2. BpCamera执行remote()->transact(START_PREVIEW, data, &reply),而remote()就是BpBinder;
3. BpBinder里的mHandle是CameraService::Client的handle索引;
4. Camera进程的IPCThreadState的transact转发请求;
5. 服务端的IPCThreadState通过talkWithDriver接收到上面的请求,当然这其中mHandle起到了很重要的作用;
6. BBinder的transact和onTransact和BnCamera的onTransact依次执行;
7. BnCamera的onTransact中调用了startPreview()函数,而这个函数就是CameraService::Client的startPreview();
8. 返回值按照相反的路径返回;
目录
1. Android - Binder机制 - ServiceManager
2. Android - Binder机制 - 普通service注册
3. Android - Binder机制 - 获得普通service
4. Android - Binder机制 - client和普通service交互
5. Android - Binder机制 - Binder框架总结
6. Android - Binder机制 - ProcessState和IPCThreadState
7. Android - Binder机制 - 驱动
Android - Binder机制 - client和普通service交互
UML及说明
和前两篇结构基本一致,只说明特别的几个地方:
1. Camera客户端执行startPreview()是通过BpCamera来完成的;
2. ICamera定义了摄像头操作的接口,它是抽象类,BpCamera是客户端的实现;
3. CameraService: :Client是服务端,每个Camera客户端对应一个CameraService: :Client;
4. BnCamera服务端对ICamera的实现;
5. BBinder在之前没见过,它服务端对IBinder的实现,主要接口是onTransact();
6. 这个图BpBinder和BBinder应该各对应一组ProcessState和IPCThreadState,因为它们存在于每个binder进程,不管是客户端还是服务端;
交互流程
1. Camera的startPreview()调用BpCamera的startPreview();2. BpCamera执行remote()->transact(START_PREVIEW, data, &reply),而remote()就是BpBinder;
3. BpBinder里的mHandle是CameraService::Client的handle索引;
4. Camera进程的IPCThreadState的transact转发请求;
5. 服务端的IPCThreadState通过talkWithDriver接收到上面的请求,当然这其中mHandle起到了很重要的作用;
6. BBinder的transact和onTransact和BnCamera的onTransact依次执行;
7. BnCamera的onTransact中调用了startPreview()函数,而这个函数就是CameraService::Client的startPreview();
8. 返回值按照相反的路径返回;
相关文章推荐
- Android - Binder机制 - client和普通service交互
- Android - Binder机制 - 获得普通service
- android IPC binder -- client/server与service manager交互流程
- Android - Binder机制 - 普通service注册
- android binder 机制二(client和普通server)
- Android — Activity与Service交互之Binder总结
- 【android】binder机制-service
- 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
- Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析
- android开发--activity与service交互之binder
- 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
- Service Manager在Android进程间通信机制Binder中的身份--守护进程
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
- Android系统Binder机制之一(Service Manager篇)
- [Binder.1] 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
- Android Activity与Service数据交互:Binder、bindService(系列2)
- Android系统的Binder机制之四——系统Service
- android binder 机制三(匿名Service)
- Android Binder机制 - defaultServiceManager()源码分析