一篇文章一張思惟導圖看懂Android學習最佳路線(轉載)

Android學習路線從4個階段來對Android的學習過程作一個全面的分析:Android初級、中級、高級以及資深工程師。
只針對Android應用開發,不針對Rom開發和逆向工程等。方便起見虛擬「小D」爲成長人物進行描述。vue

初級工程師
小D以前徹底沒接觸過Android開發,對編程基礎、數據結構、C語言都有必定基礎,Java語法什麼的也都掌握的比較好,並不會搞Android。
首先須要購買一本Android入門的書籍(如今更推薦直接看視頻教程結合網上教程動手練習),爲了更快地學習Android,小D業餘時間也都用來一邊看書一邊照着書中的例子敲代碼,結果2周時間小D就把這本書學了一遍。看完這本書後對Android的歷史、結構、代碼規範等都有了一個大概的瞭解,能夠寫出一些簡單的Activity。這個時候在小D眼裏,Android開發很簡單很好玩,經過在xml中擺放一些按鈕文本框什麼的就能夠作一些界面了。python

小D開始跟着他的技術導師作需求,一些簡單的小需求不在話下了。忽然有一天來了一個需求,該需求要求在Activity中爲一個button加一個動畫效果,小D慌了:「徹底沒接觸過,書上也沒有講,怎麼辦呢?」小D冷靜了下,搜索「Android 動畫」,打開前幾個連接,恍然大悟,照着網上的例子把需求給實現了。
後來導師告訴他:「學好Android,官方文檔是必須看的,既全面又權威」。而後小D如獲至寶,花了一年時間把上面的guide和training都看了一遍,而且他還動手抄了幾個小例子。golang

有一天,小D又須要作一個動畫相關的需求,又搜索「Android 動畫」,忽然他楞了一下:」總不能每次寫動畫都要搜索吧!「,因而他在CSDN開了一個博客,把動畫相關的知識點都寫上去,爲的是後面再寫動畫相關的代碼就不用去搜了,事實如何呢?後面再寫動畫相關的代碼,的確不用再去搜了,由於經過寫一篇動畫博客,他把動畫相關的細節都已經記住了,這樣他就能夠不用再去參考任何文檔了,後來小D還學會了把一些瑣碎的不方便放在博客上的東西寫到了筆記上面,何時忘了10秒鐘之內均可以快速找回來,而不是花10分鐘去再次搜索一遍。
總結:Android入門的時候,須要有一本入門書(或者視頻教程),好好學習書中的內容,同時花一年時間把Android官方文檔中的training和guide看一遍,同時經過寫博客和記筆記的方式來作總結,建議讓本身的每篇博客都有價值些。經過一年時間的學習,相信每一個人均可以達到中級工程師的水平。
技術要求:
- 基本知識點
好比四大組件如何使用、如何建立Service、如何進行佈局、簡單的自定義View、動畫等常見技術
- 書籍推薦
《第一行代碼 Android》、《瘋狂Android》編程


中級工程師
小D通過一年的努力學習終於成爲Android中級工程師了。到了中級工程師,已經能夠在公司裏幹不少體力活了,可是一些很重要的任務小D還不能一我的承擔起來,這個時候小D須要學習的內容就不少了,以下所示:
- AIDL:熟悉AIDL,理解其工做原理,懂transact和onTransact的區別;
- Binder:從Java層大概理解Binder的工做原理,懂Parcel對象的使用;
- 多進程:熟練掌握多進程的運行機制,懂Messenger、Socket等;
- 事件分發:彈性滑動、滑動衝突等;
- 玩轉View:View的繪製原理、各類自定義View;
- 動畫系列:熟悉View動畫和屬性動畫的不一樣點,懂屬性動畫的工做原理;
- 懂性能優化、熟悉mat等工具
- 懂點常見的設計模式
學習方法
閱讀進階書籍,閱讀Android源碼,閱讀官方文檔並嘗試本身寫相關的技術文章,須要有必定技術深度和自我思考。在這個階段的學習過程當中,有2個點是比較困擾你們的,一個是閱讀源碼,另外一個是自定義View以及滑動衝突。
如何閱讀源碼呢?這是個頭疼的問題,可是源碼必需要讀。閱讀源碼的時候不要深刻代碼細節不可自拔,要關注代碼的流程並儘可能挖掘出對應用層開發有用的結論。另外仔細閱讀源碼中對一個類或者方法的註釋,在看不懂源碼時,源碼中的註釋能夠幫你更好地瞭解源碼中的工做原理,這個過程雖然艱苦,可是別無他法。
如何玩轉自定義View呢?咱們要透過現象看本質,更多地去關注自定義view所需的知識點:
- 搞懂view的滑動原理
- 搞懂如何實現彈性滑動
- 搞懂view的滑動衝突
- 搞懂view的measure、layout和draw
- 而後再學習幾個已有的自定義view的例子
- 最後就能夠搞定自定義view了,所謂萬變不離其宗
大概再須要1-2年時間,便可達到高級工程師的技術水平。我我的認爲經過《Android開發藝術探索》和《Android羣英傳》能夠縮短這個過程爲0.5-1年。注意,達到高級工程師的技術水平不表明就能夠馬上成爲高級工程師(受機遇、是否跳槽的影響),可是技術達到了,成爲高級工程師只是很簡單的事。
技術要求:
- 稍微深刻的知識點
AIDL、Messenger、Binder、多進程、動畫、滑動衝突、自定義View、消息隊列等
- 書籍推薦
《Android開發藝術探索》、《Android羣英傳》設計模式


高級工程師
小D成爲了求之不得的高級工程師。這個時候小D的Android水平已經不錯了,可是小D的目標是資深工程師,小D據說資深工程師月薪能夠達到30k+。
爲了成爲Android資深工程師,須要學習的東西就更多了,而且有些並非那麼具體了,以下所示:
- 繼續加深理解」稍微深刻的知識點「中所定義的內容
- 瞭解系統核心機制:
1. 瞭解SystemServer的啓動過程
2. 瞭解主線程的消息循環模型
3. 瞭解AMS和PMS的工做原理
4. 可以回答問題」一個應用存在多少個Window?「
5. 瞭解四大組件的大概工做流程
6. …
- 基本知識點的細節
1. Activity的啓動模式以及異常狀況下不一樣Activity的表現
2. Service的onBind和onReBind的關聯
3. onServiceDisconnected(ComponentName className)和binderDied()的區別
4. AsyncTask在不一樣版本上的表現細節
5. 線程池的細節和參數配置
6. …
- 熟悉設計模式,有架構意識
學習方法
這個時候已經沒有太具體的學習方法了,無非就是看書、看源碼和作項目,平時多種總結,儘可能將知識融會貫通從而造成一種體系化的感受。
同時這個階段對架構是有必定要求的,架構是抽象的,可是設計模式是具體的,因此必定要增強下設計模式的學習。關於設計模式的學習,推薦《Android 源碼設計模式解析與實戰》,既能夠學習設計模式,又可能體會到Android源碼中的設計思想。
技術要求:
- 稍微深刻的知識點
- 系統核心機制
- 基本知識點的細節
- 設計模式和架構
- 書籍推薦
《Android開發藝術探索》、《Android 源碼設計模式解析與實戰》、《Android內核剖析》性能優化


資深工程師
更多瞭解不一樣業務的架構問題,內核源碼設計原理,整理並開源本身的組件微信

 

大天然,飄然的風,本人博客網站: http://www.ssqhm.com QQ羣: python技術交流羣:453879716,人工智能深度學習羣:251088643  golang技術交流羣:316397059,vuejs技術交流羣:458915921 有興趣的能夠加入  微信公衆賬號:大天然預測(ssqyuce)原雙色球預測, 心禪道(xinchandao),囤幣一族(tunbitt)
相關文章
相關標籤/搜索