天天看點

Android跨程序間通信Messenger

聲明:本文參考自《Android 基于Message的程序間通信 Messenger完全解析》

Messenger就是基于Message的程序間通信的,也就是我們可以:線上程間利用Handler.send(Message)一樣,是以用起來是非常簡單的。

Messenger是可以互相發送消息的,當然,這也就要求在用戶端和服務端都有自己的Messenger。

好處

  • 基于Message,對于大多數Android開發者都比較熟悉
  • 支援回調的方式,也就是服務端處理完成長任務可以和用戶端互動
  • 不需要編寫aidl檔案

用處

跨程序通信

源碼分析

Messenger内部也是依賴aidl檔案實作通信的。

實作服務端和用戶端之間的通信

與AIDL比較

當您需要執行 IPC 時,為您的接口使用 Messenger 要比使用 AIDL 實作它更加簡單,因為 Messenger 會将所有服務調用排入隊列,而純粹的 AIDL 接口會同時向服務發送多個請求,服務随後必須應對多線程處理。

對于大多數應用,服務不需要執行多線程處理,是以使用 Messenger 可讓服務一次處理一個調用。如果您的服務必須執行多線程處理,則應使用 AIDL 來定義接口。