Android之IPC程序通訊方案適用場景總結
阿新 • • 發佈:2018-12-19
IPC是 Inter-Proscess Communication的縮寫,含義為程序間的通訊或者跨程序通訊,是指兩個程序之間進行資料交換的過程。
名稱 | 優點 | 缺點 | 適用場景 |
---|---|---|---|
Bundle | 簡單易用 | 只能傳輸Bundle支援的資料型別 | 四大元件間的程序通訊 |
檔案共享 | 簡單易用 | 不適合高併發場景,並且無法做到程序間的即時通訊 | 無併發訪問情形,交換簡單的資料實時性不高的場景 |
AIDL | 功能強大,支援一對多併發通訊,支援實時通訊 | 使用稍複雜,需要處理好執行緒同步 | 一對多通訊且有RPC需求 |
Messenger | 功能一般,支援一對多串發通訊,支援實時通訊 | 不能很好處理高併發情形,不支援RPC,資料通過Message進行傳輸,因此只能傳輸Bundle支援的資料型別 | 低併發的一對多即時通訊,無RPC需求,或者無需返回結果的RPC需求 |
ContentProvider | 在資料來源訪問方面功能強大,支援一對多併發資料共享,可通過Call方法擴充套件其他操作 | 可以理解為受約束的AIDL,主要提供資料來源的CRUD操作 | 低併發的一對多程序間的資料共享 |
Socket | 功能強大,可以通過網路傳輸位元組流 | 實現細節稍微有點繁瑣,不支援直接的RPC | 網路資料交換 |
RPC(Remote Procedure Call)—遠端過程呼叫,它是一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。
備註:出自《Android開發藝術探索》