16年過來,進(jìn)了傳說中的某廠闯狱,福利不錯~~技術(shù)知識方面也有一些其他的收獲,總結(jié)如下抛计,對比一下技術(shù):
總體上來說扩氢,新東家程序員不用關(guān)心底層,只需關(guān)注業(yè)務(wù)邏輯和ui就好爷辱。
老東家需要自己定義的地方比較多
1. 架構(gòu)上:
新東家 mvvm + DataBinding
豬廠那邊則是傳統(tǒng)mvc录豺,比較笨重,一個Activity中代碼上1000行饭弓,業(yè)務(wù)邏輯全糅雜在里面了双饥。
2. 三方庫:
新東家其實(shí)很少直接使用三方庫,一般都進(jìn)行了些優(yōu)化借鑒參考或改寫弟断,老東家直接拿來使用咏花。
分情況說:
a. 網(wǎng)絡(luò)請求
新東家自己做了封裝了一套傳輸協(xié)議,比較高大上阀趴,平時寫代碼幾乎可以不用關(guān)心數(shù)據(jù)傳輸問題昏翰。網(wǎng)路請求只是個體力活,之間的封裝刘急,抽象性均較高棚菊。朋友們可能注意到我使用的是幾乎不,是的叔汁,這里我就遇到一些坑统求,比如圖片,音頻上傳需求時就遇到過据块,一次灰度版本也遇到過改動底層協(xié)議的命名出現(xiàn)一個比較嚴(yán)重的大范圍crash码邻,所以封裝程度高也有缺點(diǎn),在做邏輯或修改時另假,不小心會踩坑像屋。
前東家,恩边篮,網(wǎng)絡(luò)框架整個借鑒流程己莺。先AsyncHttpClient奏甫,然后引入Volley, 15年時引入okhttp + Gson(嚴(yán)格算和前面兩個不是同一類型)篇恒,這里做的很不好的地方扶檐,雜糅太多框架,可擴(kuò)展性較差胁艰,初次的架構(gòu)沒考慮到以后款筑,替換框架成本較大。離職的時候都還有前面兩個框架在里面腾么,還準(zhǔn)備引入retrofit也是醉了奈梳。
b 圖片框架
新東家,這里還是自己寫了一個圖片庫解虱,使用較簡單攘须,可配置性較高,然后同事添加上 DataBinding的bingdingAdapter后殴泰,簡單的圖片都不需要寫請求代碼于宙,xml配置就好。復(fù)雜點(diǎn)使用配置屬性悍汛,就可以搞定捞魁。當(dāng)然,databinding 也帶來些坑离咐∑准螅可以參照之前文章http://www.reibang.com/p/d82bb995db4d 綜上,能滿足所有的要求宵蛀,支持配置昆著,使用較簡單。
老東家术陶,圖片庫與網(wǎng)絡(luò)請求類似凑懂,Imageloader 然后部分替換Glide,替換和使用過程也遇到一些坑瞳别。 Glide還是很強(qiáng)大的征候,支持gif,代碼量不大(居中Fresco>Glide>Picasso)祟敛。 Picasso 優(yōu)勢在于可以選擇將網(wǎng)絡(luò)請求的緩存部分交給了okhttp實(shí)現(xiàn),Square的全家桶兆解。Fresco天生缺點(diǎn)太大了馆铁。可參見這篇的思路改造下: http://mp.weixin.qq.com/s?__biz=MzI2OTQxMTM4OQ==&mid=2247484509&idx=1&sn=0cd5005e1d8137cdba01315552bf49f3&chksm=eae1f10fdd9678198a15ba0938f7dc8909a7e2c2d16c58bc4c72e70c4e8b7ff50fb6bb7f68ed#rd
c 異步
這個兩家公司類似锅睛,參考Asycktask自己寫了一個埠巨,解決其版本不一致導(dǎo)致的串行和并行問題历谍,以及請求數(shù)不操過128問題。
d 組件間 消息通知
新東家辣垒,這里也有兩個庫雜糅在一起望侈,EventCenter ,LocalBroadcastManager勋桶。 第一個是參考Event bus 的脱衙,接口基本一致,但是優(yōu)化方面做的沒有Event bus 好例驹。
老東家直接Event bus捐韩。
e 緩存
這里基本上一直 DB + sp及內(nèi)存級
新東家DB 自己采用ORM + 注解封裝了下,注解消耗一定性能鹃锈,但代碼量小和使用上較簡單荤胁。
老東家DB 自己寫sqlite helper,配置較高屎债,可優(yōu)化較高仅政,但實(shí)際工程中,需要優(yōu)化的地方不多盆驹。
f 混合框架
新東家自家的混合框架
老東家 ydk圆丹,JsBridge http://www.reibang.com/p/fce3e2f9cabc
g 一些其他的:
新東家,框架mvvm + DataBinding 框架召娜,再加上抽象运褪,基本上Activity代碼不超過10行,在fragment層級中進(jìn)行處理玖瘸。性能優(yōu)化方面秸讹,老東家確實(shí)不如,比如anr分析雅倒,traceView卡慢監(jiān)聽璃诀,代碼規(guī)范,內(nèi)存泄漏等蔑匣。 技術(shù)上劣欢,這邊多了些:比如換膚,熱修復(fù)裁良,進(jìn)程痹浣活、jni編程价脾。代碼混淆牧抵、自動化打包、持續(xù)集成(自己的)、項(xiàng)目管理svn(比較坑些)犀变。
老東家:
dex分包另起進(jìn)程加載優(yōu)化啟動速度妹孙,android-priority-jobqueue 線程管理 自動化打包、持續(xù)集成jenkins获枝、項(xiàng)目管理git蠢正。
另外談?wù)劄槁锊灰隦xJava
15年起,RxJava文章遍地走省店,其實(shí)我覺得其大而不當(dāng)嚣崭,能力不專。最核心能力就是異步并發(fā)萨西, 流式處理上有鹿,這個確實(shí)強(qiáng)大。一般而言谎脯,公司都形成了自己的異步框架葱跋。實(shí)際項(xiàng)目中多個線程的同步, android-priority-jobqueue這個庫基本可以滿足要求源梭。其他網(wǎng)上的擴(kuò)展的組件消息傳遞與EventBus性能上還是一定差距娱俺。至于其擴(kuò)展的RxBinding, DataBinding基本上能替代废麻。