binder连接池

来源:互联网 发布:认知心理学 知乎 编辑:程序博客网 时间:2024/05/01 08:22

why?

产生原因:因为当有多个不同的业务块都要使用AIDL来进行通信,则需要创建多个Service,每创建一个Service就需要消耗系统资源。

解决思路:将所有的AIDL放在一个Service中处理


how?

创建BinderPool连接池:

1.单例模式:整个app只能创建一个对象

2.创建IBinderPool的静态类:重写接口

3.创建该类时候,自动连接Service

4.创建queryBinder()方法,能够调用IBinderPool的queryBinder()(因为服务器返回的Binder在BinderPool中)


uses:

二、使用

具体原理:①、每个AIDL创建AIDL接口并用类实现此接口

              ②、然后创建一个主AIDL开放queryBinder接口,客户端输入int标识符来选择需要哪一个AIDL,来返回相对应的AIDL在服务器中的具体对象

              ③、服务器返回主AIDL类给客户端,这样客户端就能够调用主AIDL对象的queryBinder(int enum),获取需要的aidl

主要作用:将每个业务的AIDL请求统一转发给一个Service,避免Service的重建


0 0