日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

还在用AIDL吗?试试EasyMessenger吧

發布時間:2023/12/24 编程问答 46 如意码农
生活随笔 收集整理的這篇文章主要介紹了 还在用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吧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。