Android 工程師必備技能!
阿新 • • 發佈:2019-02-06
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較大 | 較小 | 較小 | 較小 |
成功率 | 較高 | 最高 | 一般 | 一般 |
總的來說:
- Dexposed無法支援全平臺,並不適合應用到商業產品中。
- AndFix作為native解決方案,首先面臨的是穩定性與相容性問題,更重要的是它無法實現類替換,它是需要大量額外的開發成本的。
- QZone方案主要問題是插樁帶來Dalvik的效能問題,以及為了解決Art下記憶體地址問題而導致補丁包急速增大的。
Tinker熱補丁方案不僅支援類、So以及資源的替換,它還是2.X-7.X的全平臺支援。它無需插樁,補丁大小也遠遠小於其他方案。Tinker已執行在微信的數億Android裝置上。
下面這個專案是一個基於熱修復框架Tinker的Demo,並總結了一些常見的問題。
tinker.gif
Step 5. 架構
常見的架構有:MVC,MVP,MVVM。使用最多的就是MVC架構了,現在很多應用也使用MVP架構,MVVM用的還很少。
architucture.png
下面這個專案是一個特別簡單的MVP架構框架,模擬檔案下載。
mvp.gif
Step 6. 整理中,敬請期待
Step 7.這一步最難,敬請期待
結語:為了收集整理這些東西,基本上整個國慶假期的時間和精力都花費在這個上面,希望會對大家有幫助,未來會不斷的完善。如果你喜歡我的文章,可以點選這裡Github進我高大上、帥的不能不能的國外網站看看,也可以點這裡掘金我超愛的一個博文平臺,這個就不要點啦簡書,