Androd的IPC通信(二)

来源:互联网 发布:大数据下的中国 编辑:程序博客网 时间:2024/06/06 12:38

IPC的IBinder接口--定义与实现

    1.  Android架构的沟通依赖单一的IBinder接口,此时,IPC的Client端调用IBinder的transact()函数,透过IPC机制而调用到远程(remote)的onTransact()函数。

    2.  IBinder定义了一些函数,可以让Client跨进程地调用,最主要的是transact()函数。

    3.  IBinder接口的实现。基于这个IBinder的定义档,我们可以开发类来实现它,并在其他的APP中进行使用,实现进程间的调用。在Android框架中,也基于这个接口类实现了Binder和ProxyBinder基类来实现进程间通信。


Java层的Binder基类定义

     基类Binder的很重要的目的是支持跨进程调用Service, 既允许远程的Client跨进程调用某个Service。


Java层的BinderProxy基类的定义

    当我们看到xxxxProxy的定义时,就应该想到,它是摆在Client端进程里,作为Service端的分身。

    由于跨进程沟通是时,不是从Java层直接调用的,而是通过底层的Binder Driver驱动来沟通的,所以Client端必须通过Proxy的IBinder接口,转而调用JNI本地模块来衔接到底层BinderDriver的驱动服务,进而调用到在另一个进程中运行的Service。

    当Client透过IBinder接口而调用到BinderProxy的transact()函数时,就调用到JNI本地的transact()函数,进而衔接到底层BinderDriver驱动服务。




0 0
原创粉丝点击