博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
还在用AIDL吗?试试EasyMessenger吧
阅读量:7224 次
发布时间:2019-06-29

本文共 1425 字,大约阅读时间需要 4 分钟。

EasyMessenger

一款用于Android平台的基于Binder的进程间通信库,采用annotationProcessor生成IPC通信需要的代码。EasyMessenger相对于AIDL具备如下优势:

  • 采用Java声明接口,更方便
  • 接口方法支持重载
  • 同时支持同步和异步通信

EasyMessenger目前支持如下数据类型:

  • boolean, byte, char, short, int, long, float, double
  • boolean[], byte[], char[], int[], long[], float[], double[]
  • String, String[]
  • Parcelable, Parcelable[]
  • Serializable
  • ArrayList
  • enum(需要实现parcelable)

下载

implementation 'cn.zmy:easymessenger-lib:0.1'annotationProcessor 'cn.zmy:easymessenger-compilier:0.1'

开始使用

Client

声明接口:

@BinderClientpublic interface ClientInterface{    int add(int num1, int num2);}

build之后,会生成ClientInterfaceHelper类,开发者也正是通过这个Helper类进行IPC通信。

//使用之前需要初始化ClientInterfaceHelper.instance.__init(context,     new ComponentName("{server_package}", "{server_service_name}"));    //同步IPC调用int result = ClientInterfaceHelper.instance.add(1, 2);    //异步IPC调用ClientInterfaceHelper.instance.addAsync(1, 2, new IntCallback(){    @Override    public void onSuccess(int result)    {        //调用成功    }    @Override    public void onError(Exception ex)    {        //调用失败    }});

Server

实现接口:

@BinderServerpublic class FunctionImpl{    //必须是pubic    //方法名称、参数数量、类型、顺序必须和client的接口一致    public int add(int num1, int num2)    {            }}

build之后会生成FunctionImplBinder,将这个Binder和Service绑定:

public class ServerService extends Service{    @Override    public IBinder onBind(Intent intent)    {        return new FunctionImplBinder(new FunctionImpl());    }}

转载地址:http://ajkfm.baihongyu.com/

你可能感兴趣的文章
演示:OSPF的邻居关系故障分析与排除
查看>>
Apache HTTP Server搭建虚拟主机
查看>>
Ntop性能提升方案
查看>>
用PowerDesigner将DB2数据字典导成WORD
查看>>
(译).NET4.X 并行任务中Task.Start()的FAQ
查看>>
git log显示
查看>>
Java-抽象类定义构造方法
查看>>
Android 短信模块分析(二) MMS中四大组件核心功能详解
查看>>
poj 3615(floyd变形)
查看>>
分享45个设计师应该见到的新鲜的Web移动设备用户界面PSD套件
查看>>
SDL_BlitSurface
查看>>
Ubuntu12.04编译Android2.3.4
查看>>
群里一个高手写的url?传参执行php函数的小程序, 收藏下
查看>>
Android实现图片顺时逆时旋转及拖拽显示效果
查看>>
java中相同名字不同返回类型的方法
查看>>
java中的容器解释
查看>>
Rails NameError uninitialized constant class solution
查看>>
网络直播电视之M3U8解析篇 (下)
查看>>
开涛spring3(3.4) - DI 之 3.4 Bean的作用域
查看>>
Android 获取SDCard中某个目录下图片
查看>>