1 基本概念
1.1 android開啟多進程的方式:
- 在menifest中指定android:process屬性
- 通過jni在native層fork一個進程
兩種配置process的方式
1 android:process:":remote"
2 android:process:"com.ryg.cha.remote"
:方式表示在當前進程名后加上remote,為當前應用私有進程,其它應用的組件不可以跑在這個進程。
而完整進程名的進程屬于全局進程,其它應用的組件可以通過shareUID和它跑在統一進程。(還需要簽名相同。)
1.2 Serializable和Parceable接口
接口類型 | 使用步驟 | 特點 | 適用場景 | 注意事項 |
---|---|---|---|---|
Serializable | 實現Serializable接口并聲明serialVersionUID | java接口,使用簡單但開銷大,生成大量臨時變量,大量IO,容易引起頻繁GC | 序列化到存儲設備或者網絡傳輸 | transient變量不參與序列化 |
Parceable | 實現Parcelable接口,(1)重寫writeToParcel方法,序列化為Parcel對象;(2)describeContents,默認返回1(3)實例化靜態內部對象CREATOR實現接口Parcelable.Creator,反序列化 | android接口,效率更高,性能更優,推薦方式 | 內存序列化(例如Intent間數據傳遞、IPC),不能使用在將數據存儲在磁盤的情況 | 成員變量中有對象類型時,反序列化需要傳遞當前線程的上下文類加載器 |
更多內容可參考:Android中Serializable和Parcelable序列化對象詳解
1.3 序列化與持久化的區別
名稱 | 作用 | 解決什么問題 |
---|---|---|
序列化 | 把內存中的對象變成流的形式 | 對象傳輸的問題,如何把對象變成字節流 |
持久化 | 將內存中的對象存儲在永久保存的磁盤上面 | 對象存儲和恢復的問題 |