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

本文共 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://hvhal.baihongyu.com/

你可能感兴趣的文章
Asp.Net IIS7.5伪静态设置
查看>>
订阅Jenkins的邮件列表,获取最新的信息
查看>>
第一百一十七节,JavaScript,DOM元素尺寸和位置
查看>>
gitignore 忽略文件夹
查看>>
oracle存储过程中文乱码问题
查看>>
linux下sendmail邮件系统安装操作记录
查看>>
elk系列6之tcp模块的使用
查看>>
Hadoop MapReduce编程 API入门系列之网页流量版本1(二十一)
查看>>
ASP.NET Core应用针对静态文件请求的处理[5]: DefaultFilesMiddleware中间件如何显示默认页面...
查看>>
easyui datagrid tooltip
查看>>
IOS , plist 配置项说明
查看>>
MAC上反编译android apk---apktool, dex2jar, jd-jui安装使用(含手动签名)
查看>>
2017年计划安排
查看>>
(转) Summary of NIPS 2016
查看>>
Mac Pro 编译安装 Redis 的 PHP 客户端 phpredis
查看>>
HBase启动和停止命令
查看>>
SharePoint 2016 自定义城市和区域字段
查看>>
OPCClient和OPCServer在Windows上运行方式的恩怨
查看>>
第三篇:基于K-近邻分类算法的手写识别系统
查看>>
elasticsearch聚合操作——本质就是针对搜索后的结果使用桶bucket(允许嵌套)进行group by,统计下分组结果,包括min/max/avg...
查看>>