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