日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

还在用AIDL吗?试试EasyMessenger吧

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

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