Android IPC之Binder连接池BinderPool

本文探讨了Android开发中如何使用Binder连接池BinderPool来优化AIDL服务,减少Service的数量,提高资源利用效率。通过在Service中统一管理多个业务模块的Binder,并提供查询接口按需返回相应Binder,降低了应用的重量级。客户端则通过单例模式与服务端进行交互,实现了高效的Binder通信。
摘要由CSDN通过智能技术生成

----------------------Android开发艺术探索学习之Binder连接池----------------------

通常情况下,在使用AIDL时,一个Service需要创建一个AIDL接口,在Service中创建一个类集成AIDL接口中的Stub并实现抽象方法,在onBind中返回该类实例,然后在Client中绑定服务,建立连接后可以访问Service中方法,即在一个Service中只能返回一个业务调用的Binder。

当多个业务模块都需要使用AIDL时(如50个,100个),如果创建多个Service会消耗大量的系统资源,使应用重量级,为了减少Service的数量,可以将多有的AIDL 放在一个Service中去管理。

具体是:每个业务模块创建自己的AIDL接口并实现该接口,向服务提供自己唯一的Binder对象,对于Service端,只提供一个Service,Service提供一个queryBinder的接口,这个接口可以根据具体的业务模块返回相应的Binder对象给客户端。

Binder连接池的主要作用是统一各个业务模块的Binder并统一转发到远程Service中去执行,避免重复创建Service.


具体使用过程:

服务端:服务端实现各个模块的AIDL接口和Binder



import android.os.RemoteException;

// 这是计算模块的Binder实现
public class ComputeImpl extends ICompute.Stub {
    @Override
    public int add(int a, int b) throws RemoteException {
        return a + b;
    }
}
import and
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值