还在用AIDL吗?试试EasyMessenger吧
生活随笔
收集整理的這篇文章主要介紹了
还在用AIDL吗?试试EasyMessenger吧
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
EasyMessenger
直達Github項目地址
一款用于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
聲明接口:
@BinderClient
public 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
實現接口:
@BinderServer
public 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());
}
}
直達Github項目地址
歡迎關注我的博客
總結
以上是生活随笔為你收集整理的还在用AIDL吗?试试EasyMessenger吧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tomcat 错误查看
- 下一篇: Vue 父子组件传递方式