目录
4、 IPC的IBinder接口 -- 定义与实现
IBinder接口的定義
- 大家都知道,当两个类都在同一个进程里执行时,两者之间的沟通,只要采取一般的函数调用(Function Call)就行了,既快速又方便。一旦两个类分别在不同的进程里执行时,两者之间的沟通,就不能采取一般的函数调用途径了。只好采取IPC沟通途径
- Android框架的IPC沟通仰赖单一的IBinder接口。此时Client端调用IBinder接口的transact()函数,透过IPC机制而调用到远方(Remote)的onTransact()函数。
- 在Android的源代码里, Java层的IBinder接口是定义于IBinder.java代码文档里。 此程序文件如下:
// IBinder.java
// .......
public interface IBinder {
// ..........
public boolean transact(int code, Parcel data, Parcel reply, int flags)
throws RemoteException;
// ...........
}
- IBinder接口定义了一些函数,可以让Client程序可以进行跨进程的調用(当然也能支持同进程的短程調用)。其中,最主要的一个函数就是: transact()函数。于此,以图形来表达IBinder接口与transact()函数之间的关系。如下述的UML图:

IBinder接口的實現類
- 基于这个IBinder.java定义档,我们就可以开发类别来实作(Implement)它,然后提供给其它App来調用了。在Android的框架里,也撰写了Binder基类和BinderProxy类别来实作 IBinder接口。
IBinder实作类之例: Binder和BinderProxy类

最低0.47元/天 解锁文章
970

被折叠的 条评论
为什么被折叠?



