使用多進程:android:process
屬性android
Android爲每個進程都分配一個獨立的虛擬機,致使在不一樣的虛擬機中訪問同一個類的對象會產生多份副本,即便是public static int sUerId = 1
之類的靜態變量也同樣網絡
使用多進程會形成:併發
SharedPreferences
的可靠性降低decribleContents
方法,writeToParcel
方法,和CREATOR
使用Bundleide
使用文件共享高併發
使用Messenger線程
使用AIDLcode
使用ContentProvider對象
使用Socket(「套接字」)繼承
名稱 | 優勢 | 缺點 | 使用場景 |
---|---|---|---|
Bundle | 簡單 | 只能傳輸Bundle支持的數據類型 | 四大組件之間進程通訊 |
文件共享 | 簡單 | 不適合高併發,沒法作到進程間即時通訊 | 無併發訪問情形 |
AIDL | 一對多併發即時通訊 | 一對多通訊且有RPC需求 | |
Messenger | 一對多串行通訊,支持實時通訊 | 不能處理好高併發,不支持RPC, | 低併發的一對多即時通訊,無RPC需求 |
ContentProvider | 支持一對多併發數據共享, | 理解爲受約束的AIDL,主要提供CRUD操做 | 一對多進程間的數據共享 |
Socket | 功能強大,經過網絡傳輸字節流,支持一對多併發實時通訊 | 不支持直接RPC | 網絡數據交換 |
參考:《Android開發藝術探索》接口