聲明:本文參考自《Android 基于Message的程序間通信 Messenger完全解析》
Messenger就是基于Message的程序間通信的,也就是我們可以:線上程間利用Handler.send(Message)一樣,是以用起來是非常簡單的。
Messenger是可以互相發送消息的,當然,這也就要求在用戶端和服務端都有自己的Messenger。
好處
- 基于Message,對于大多數Android開發者都比較熟悉
- 支援回調的方式,也就是服務端處理完成長任務可以和用戶端互動
- 不需要編寫aidl檔案
用處
跨程序通信
源碼分析
Messenger内部也是依賴aidl檔案實作通信的。
實作服務端和用戶端之間的通信
與AIDL比較
當您需要執行 IPC 時,為您的接口使用 Messenger 要比使用 AIDL 實作它更加簡單,因為 Messenger 會将所有服務調用排入隊列,而純粹的 AIDL 接口會同時向服務發送多個請求,服務随後必須應對多線程處理。
對于大多數應用,服務不需要執行多線程處理,是以使用 Messenger 可讓服務一次處理一個調用。如果您的服務必須執行多線程處理,則應使用 AIDL 來定義接口。