深入Android架构(从线程到AIDL)_03 IPC的IBinder接口

目录

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

IBinder接口的定義

IBinder接口的實現類

Java层的Binder基类定义​编辑

Binder基类的主要函数

Java层的BinderProxy基类定义


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类

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思忖小下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值