2016年干貨小結

16年過來,進了傳說中的某廠,福利不錯~~技術知識方面也有一些其他的收獲,總結如下,對比一下技術:
總體上來說,新東家程序員不用關心底層,只需關注業(yè)務邏輯和ui就好。
老東家需要自己定義的地方比較多

1. 架構上:

新東家 mvvm + DataBinding
豬廠那邊則是傳統(tǒng)mvc,比較笨重,一個Activity中代碼上1000行,業(yè)務邏輯全糅雜在里面了。

2. 三方庫:

新東家其實很少直接使用三方庫,一般都進行了些優(yōu)化借鑒參考或改寫,老東家直接拿來使用。

分情況說:

a. 網(wǎng)絡請求

新東家自己做了封裝了一套傳輸協(xié)議,比較高大上,平時寫代碼幾乎可以不用關心數(shù)據(jù)傳輸問題。網(wǎng)路請求只是個體力活,之間的封裝,抽象性均較高。朋友們可能注意到我使用的是幾乎不,是的,這里我就遇到一些坑,比如圖片,音頻上傳需求時就遇到過,一次灰度版本也遇到過改動底層協(xié)議的命名出現(xiàn)一個比較嚴重的大范圍crash,所以封裝程度高也有缺點,在做邏輯或修改時,不小心會踩坑。

前東家,恩,網(wǎng)絡框架整個借鑒流程。先AsyncHttpClient,然后引入Volley, 15年時引入okhttp + Gson(嚴格算和前面兩個不是同一類型),這里做的很不好的地方,雜糅太多框架,可擴展性較差,初次的架構沒考慮到以后,替換框架成本較大。離職的時候都還有前面兩個框架在里面,還準備引入retrofit也是醉了。

b 圖片框架

新東家,這里還是自己寫了一個圖片庫,使用較簡單,可配置性較高,然后同事添加上 DataBinding的bingdingAdapter后,簡單的圖片都不需要寫請求代碼,xml配置就好。復雜點使用配置屬性,就可以搞定。當然,databinding 也帶來些坑??梢詤⒄罩拔恼?a href="http://www.itdecent.cn/p/d82bb995db4d" target="_blank">http://www.itdecent.cn/p/d82bb995db4d 綜上,能滿足所有的要求,支持配置,使用較簡單。

老東家,圖片庫與網(wǎng)絡請求類似,Imageloader 然后部分替換Glide,替換和使用過程也遇到一些坑。 Glide還是很強大的,支持gif,代碼量不大(居中Fresco>Glide>Picasso)。 Picasso 優(yōu)勢在于可以選擇將網(wǎng)絡請求的緩存部分交給了okhttp實現(xiàn),Square的全家桶。Fresco天生缺點太大了。可參見這篇的思路改造下: http://mp.weixin.qq.com/s?__biz=MzI2OTQxMTM4OQ==&mid=2247484509&idx=1&sn=0cd5005e1d8137cdba01315552bf49f3&chksm=eae1f10fdd9678198a15ba0938f7dc8909a7e2c2d16c58bc4c72e70c4e8b7ff50fb6bb7f68ed#rd

c 異步
這個兩家公司類似,參考Asycktask自己寫了一個,解決其版本不一致導致的串行和并行問題,以及請求數(shù)不操過128問題。

d 組件間 消息通知

新東家,這里也有兩個庫雜糅在一起,EventCenter ,LocalBroadcastManager。 第一個是參考Event bus 的,接口基本一致,但是優(yōu)化方面做的沒有Event bus 好。

老東家直接Event bus。

e 緩存

這里基本上一直 DB + sp及內存級

新東家DB 自己采用ORM + 注解封裝了下,注解消耗一定性能,但代碼量小和使用上較簡單。

老東家DB 自己寫sqlite helper,配置較高,可優(yōu)化較高,但實際工程中,需要優(yōu)化的地方不多。

f 混合框架

新東家自家的混合框架

老東家 ydk,JsBridge http://www.itdecent.cn/p/fce3e2f9cabc

g 一些其他的:

新東家,框架mvvm + DataBinding 框架,再加上抽象,基本上Activity代碼不超過10行,在fragment層級中進行處理。性能優(yōu)化方面,老東家確實不如,比如anr分析,traceView卡慢監(jiān)聽,代碼規(guī)范,內存泄漏等。 技術上,這邊多了些:比如換膚,熱修復,進程保活、jni編程。代碼混淆、自動化打包、持續(xù)集成(自己的)、項目管理svn(比較坑些)。

老東家:
dex分包另起進程加載優(yōu)化啟動速度,android-priority-jobqueue 線程管理 自動化打包、持續(xù)集成jenkins、項目管理git。

另外談談為嘛不引入RxJava

15年起,RxJava文章遍地走,其實我覺得其大而不當,能力不專。最核心能力就是異步并發(fā), 流式處理上,這個確實強大。一般而言,公司都形成了自己的異步框架。實際項目中多個線程的同步, android-priority-jobqueue這個庫基本可以滿足要求。其他網(wǎng)上的擴展的組件消息傳遞與EventBus性能上還是一定差距。至于其擴展的RxBinding, DataBinding基本上能替代。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,023評論 25 709
  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 15,268評論 4 61
  • 晚安,聽我講個故事。 已經記不起來是在16年11月中旬以后的哪一天,毅然決然地把網(wǎng)名換成了阿貓阿狗,就一直用...
    宋寶木閱讀 1,178評論 0 0
  • 1 飛燕在如畫的春色里翻騰,時而向空中竄上一丈有余,就停止了作為,張開了雙翅在成片的稻田上空滑翔,尋覓著往下墜去,...
    郭劼閱讀 609評論 2 4
  • 生活中,大多數(shù)的交流對話過程中,你不果斷回答“是”,或者“不是”,在你與對話者你一句我一句的過程中,對話者會當做你...
    喜妞閱讀 338評論 0 0

友情鏈接更多精彩內容