1. 程式人生 > >Android 工程師必備技能!

Android 工程師必備技能!

Step 1. 玩轉RxJava

使用RxJava處理非同步極其方便,各種操作符可以對資料做流水線式操作,再加上與Retrofit的結合,使得Andorid開發變的極其簡單。唯一美中不足的就是RxJava不符合我們以往的程式設計思想,學習Rxjava存在一定的難度,很多工程師對Rxjava都不能完全理解。不過,相信以下2個內容會讓你對Rxjava的使用有一個更清晰的認識。


可以清晰看到操作都發生在什麼執行緒中

Step 2. 自定義view

自定義View主要掌握以下四部分內容:

  • 繪製機制:掌握onMeasure,onLayout,onDraw及相關類的使用。
  • 事件傳遞機制:掌握dispathTouchEvent(),onInterceptEvent(),onTouchEvent()三者的相關邏輯.
  • 屬性動畫:因為屬性動畫核心是對數值的變化。自定義View中使用屬性動畫很方便對數值進行變換。
  • 相關手勢類。

Step 3. 程序間通訊與程序保活

  • Bundle:主要是放在Intent中,在四大元件間傳遞。
  • 檔案共享:一個程序寫檔案,一個程序讀檔案。
  • SharedPreferences: 不支援併發,底層基於xml。
  • Messenger:底層是通過IPC進行通訊的,主要是程序間傳遞資料,不支援併發。
  • Socket:基於TCP協議。
  • AIDL: 支援併發,一個程序可以呼叫另一個程序的方法。

2.程序保活

開源專案Hello-Daemon


daemon.gif

Step 4. 熱修復

現在市面上熱修復框架很多,以下是常見的四種。

Tinker QZone AndFix Dexposed
類替換 yes yes no no
So替換 yes no no no
資源替換 yes yes no no
全平臺支援 yes yes yes no
即時生效 no no yes yes
效能損耗 較小 較大 較小 較小
補丁包大小 較小 較大 一般 一般
開發透明 yes yes no no
複雜度 較低 較低 複雜 複雜
gradle支援 yes no no no
介面文件 豐富 較少 一般 較少
Rom體積 Dalvik較大 較小 較小 較小
成功率 較高 最高 一般 一般

總的來說:

  1. Dexposed無法支援全平臺,並不適合應用到商業產品中。
  2. AndFix作為native解決方案,首先面臨的是穩定性與相容性問題,更重要的是它無法實現類替換,它是需要大量額外的開發成本的。
  3. QZone方案主要問題是插樁帶來Dalvik的效能問題,以及為了解決Art下記憶體地址問題而導致補丁包急速增大的。
    Tinker熱補丁方案不僅支援類、So以及資源的替換,它還是2.X-7.X的全平臺支援。它無需插樁,補丁大小也遠遠小於其他方案。Tinker已執行在微信的數億Android裝置上。

下面這個專案是一個基於熱修復框架TinkerDemo,並總結了一些常見的問題。


tinker.gif

Step 5. 架構

常見的架構有:MVC,MVP,MVVM。使用最多的就是MVC架構了,現在很多應用也使用MVP架構,MVVM用的還很少。


architucture.png

下面這個專案是一個特別簡單的MVP架構框架,模擬檔案下載。


mvp.gif

Step 6. 整理中,敬請期待

Step 7.這一步最難,敬請期待

結語:為了收集整理這些東西,基本上整個國慶假期的時間和精力都花費在這個上面,希望會對大家有幫助,未來會不斷的完善。如果你喜歡我的文章,可以點選這裡Github進我高大上、帥的不能不能的國外網站看看,也可以點這裡掘金我超愛的一個博文平臺,這個就不要點啦簡書