IPC 機制(開發藝術探索)
阿新 • • 發佈:2018-12-02
IPC 機制
文章目錄
**IPC:**Inter-Process Communication的縮寫,跨程序通訊
使用場景:
1.分配更大的記憶體空間
2.防止程序被殺死
3.為至程序分擔壓力
使用時需注意的問題:
1.靜態成員和單例模式完全失效(不是同一塊記憶體,會產生不同的副本)
2.執行緒同步機制完全失效(不是同一塊記憶體,所以物件也不是同一個,因此類鎖、物件鎖也不是同一個,不能保證執行緒同步)
3.SharedPreferences 可靠性下降(SharedPreferences不支援多個程序同時寫,會有一定的機率丟失資料)
4.Application 多次建立(Android為每個程序分配獨立的虛擬機器,這個過程其實就是啟動一個應用,所以Application會被建立多次),所以我們不能直接將一些資料儲存在Application中。
使用方法:
1.四大元件在AndroidMenifest中指定android:process屬性
2.JNI層面上去fork一個新的程序
原理:
程序間,使用者空間的資料不可共享,所以使用者空間 = 不可共享空間
程序間,核心空間的資料可共享,所以核心空間 = 可共享空間
先通過 程序間 的核心空間進行 資料互動,再通過 程序內 的使用者空間 & 核心空間進行 資料互動,從而實現 程序間的使用者空間 的資料互動
基礎知識:
序列化:Serializable(持久化) Paecelable(序列化)
Serializable:java 自帶的介面,使用簡單但開銷大
Paecelable: Android 中序列化的方式,效率相對較高
區別:Parcelable 主要用於IPC中的序列化(記憶體序列化),Serializable在Android中更偏持久化的含義,在序列化到儲存裝置、網路傳輸方面,更優秀
通訊方式(待完善)
Bundle
共享檔案
Messenger
AIDL
ContentProvider
Socket