IPC(一)利用纯Binder通信(非aidl)

在Android中,当两个类都在同一个进程里执行时,两者之间的沟通,只要采取一般的函数调用(Function Call)就行了,既快速又方便。一旦两个类分别在不同的进程里执行时,两者之间的沟通,就不能采取一般的函数调用途径了。只好采取IPC沟通途径。 Android框架的IPC沟通仰赖单一的IBinder接口。此时Client端调用IBinder接口的transact()函数,透过IPC机制而调用到远方(Remote)的onTransact()函数。此时的onTransact()函数是Binder类中的函数,之所以transact()能执行到远方的onTransact(),原因是因为Binder实现了IBinder接口,Binder类复写的transact()函数内部调用了自己定义的onTransact()函数。 下面不用aidl,纯Binder来实现一次进程间的通信。
服务端实现:
首先定义一个接口:
接口定义两个方法,加法和减法。

public interface IEthan {
int  getAdd(int i,int j);
int  getminus(int i,int j);
}

下面是主角MyBinder类

public class MyBinder extends Binder implements IEthan {
   
    @Override
    protected boolean onTransact(int code, Parcel data, Parcel reply, int flags)
            throws RemoteException {
        switch (code) {
  //code为客户端Transact发送过来的code
        case 0:
            int ii[] = { 0, 0 };//此处数组长度必须和客户端发来的数组长度一致,不然报错
            data.readIntArray(ii);//获取从客户端发来的int数组,对应的getAdd中的I和j
            int add = getAdd(ii[0], ii[1</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值