背景
首先我是個菜雞,工資也低的一筆。
剛畢業時候在一家國企上班干 app 開發,干了快兩年的時候,跳槽到了一家偽大廠干安全。投了不少簡歷都沒有回音,只有這加偽大廠要我就來了。當時說好了會接觸一些底層的東西,然而平時也就寫 python 腳本,逆向,android 上寫了一些風控的東西,感覺有點 low,工資也不高,當初沒敢多要,hr 給的比我要的還高。剛剛 leader 談了談明年的規划,現在想跳槽。
現在也是很尷尬,原來 app 開發的東西也忘了不少,然后其實我想干 framework 開發,自己對 ams,pms 還算挺了解的,平時也根據他們原創了一點微小的解決方案。最近開始 fork 一個 aosp,買個 pixel 改改刷刷練習一下。
理想畢竟是理想,Android 低端不好混,沒什么經驗跳到 framework 上去感覺也是挺難的,跳回 app 開發又不甘心,現在的狀態貌似是干了快 3 年沒有特別精通的東西。最近鬧的裁員,我司也是其中之一。加薪怕是沒戲了,然而生活還要繼續,跳槽避無可避。
1、作用
Serializable
的作用是為了保存對象的屬性到本地文件、數據庫、網絡流、rmi以方
便數據傳輸,當然這種傳輸可以是程序內的也可以是兩個程序間的。而Android的
Parcelable
的設計初衷是因為Serializable
效率過慢,為了在程序內不同組件間以及
不同Android程序間(AIDL)高效的傳輸數據而設計,這些數據僅在內存中存在,
Parcelable
是通過IBinder
通信的消息的載體。
從上面的設計上我們就可以看出優劣了
2、效率及選擇
Parcelable
的性能比Serializable
好,在內存開銷方面較小,所以在內存間數據傳輸
時推薦使用Parcelable
,如activity
間傳輸數據,而Serializable
可將數據持久化方便
保存,所以在需要保存或網絡傳輸數據時選擇Serializable
,因為android不同版本
Parcelable
可能不同,所以不推薦使用Parcelable
進行數據持久化。
3、編程實現
對於Serializable
,類只需要實現Serializable
接口,並提供一個序列化版本
id(serialVersionUID)
即可。而Parcelable
則需要實現writeToParcel
、
describeContents
函數以及靜態的CREATOR變量,實際上就是將如何打包和解包
的工作自己來定義,而序列化的這些操作完全由底層實現。
最后送福利了,現在關注我並且加入群聊可以獲取包含源碼解析,自定義View,動畫實現,架構分享等。
內容難度適中,篇幅精煉,每天只需花上十幾分鍾閱讀即可。
大家可以跟我一起探討,歡迎加群探討,有flutter—底層開發—性能優化—移動架構—資深UI工程師 —NDK相關專業人員和視頻教學資料,還有更多面試題等你來拿
點擊Gitee領取