Android多媒体框架

来源:互联网 发布:php 微信开发流程 编辑:程序博客网 时间:2024/04/28 05:12

 类图


ProcessState 是一个singleton 类别,它只有一个物件(Instance) 。此物件负责打开Binder Driver ( /dev/binder 驱动) ,准备让其进程里的程式能与Binder Driver 进行沟通。例如,它在其进程( 于此,称为client 进程) 里诞生BpBinder 物件,此BpBinder 物件的执行绪(Thread) 透过Binder Driver 而转接(relayto) 到IPC thread 去执行另一个进程(( 于此,称为service 进程) 里的服务( 例如ServiceManager service ) 。


  


  与ProcessState 类别具有密切关系的是IPCThreadState 类别,这IPCThreadState 类别也是singleton 类别,只有一个物件(Instance) 。


 


       ProcessState 负责打开BinderDriver ,与Binder Driver 沟通;而IPCThreadState 负责透过Binder Driver 而进行跨进程的实际资料读写动作。例如,client 进程的程式呼叫BpBinder 的IBinder 介面的transact() 函数,此transact() 函数则呼叫IPCThreadState 物件的transact() 函数去呼叫Binder Driver 的ioctl() 函数来进行实际资料传递。

 

       


       IPCThreadState 会block( 阻塞) 住client 进程的calling thread ,而转接(relay to) 到IPC thread 去执行server 进程里的target 服务。同时等待IPC thread 执行完毕,回传数据,才放行calling thread 。◆
原创粉丝点击