專訪任玉剛 android 學(xué)習(xí)路線

在Android學(xué)習(xí)過程中长酗,初學(xué)者踩過的坑我也都踩過,我也深深地知道大家在學(xué)習(xí)過程中最棘手的問題是什么桐绒。舉個(gè)例子夺脾,在3年前之拨,我想在SlidingMenu中放入一個(gè)ListView,發(fā)現(xiàn)二者總是不能很好地一起工作咧叭,這肯定是由于滑動(dòng)沖突的問題蚀乔,我也知道,但是不知道怎么解決菲茬。我就去學(xué)校圖書館翻遍了所有的Android書籍吉挣,無(wú)果。大家肯定都知道原因婉弹,為什么我無(wú)法從書中查找到問題的答案睬魂,因?yàn)槿腴T書不講滑動(dòng)沖突,所謂的高級(jí)編程書也不講镀赌。還有一個(gè)問題氯哮,我曾經(jīng)以為view.post(runnable)可以讓runnable的run方法在線程中執(zhí)行,所以我就在run方法里面去做耗時(shí)的操作商佛,現(xiàn)在想想我當(dāng)時(shí)是多菜啊喉钢,因此我曾經(jīng)也是菜鳥。

直到若干年后的某一天良姆,我終于琢磨透了滑動(dòng)沖突的事肠虽,然后我就把解決問題的思想寫在了CSDN博客上,但是好像看得人并不多玛追,很多人并不能體會(huì)我的用心税课,后來(lái)我博客的訪問量越來(lái)越大,這才慢慢地得到了一些人的關(guān)注豹缀。后來(lái)有一天我有了寫書的契機(jī)伯复,我想到了我最開始學(xué)習(xí)Android時(shí)所踩過的坑慨代,想到滑動(dòng)沖突對(duì)我的困擾邢笙,為了更好地傳播我的技術(shù)經(jīng)驗(yàn),為了讓更多的人少踩一些坑侍匙,為了讓更多地人成為Android高級(jí)工程師氮惯,我毅然決定將Android開發(fā)中最重要的、最疑難的想暗、最容易困擾大家的妇汗、成為高級(jí)工程師所必備的知識(shí)點(diǎn)和盤托出,這就是《Android開發(fā)藝術(shù)探索》存在的原因以及意義说莫。書的反響怎么樣呢杨箭?從目前讀者的評(píng)價(jià)來(lái)看,內(nèi)容基本無(wú)差評(píng)储狭,我收到了很多讀者的肯定以及感謝互婿,這說明很多人能夠理解我的用心捣郊。

說了那么多,言歸正傳慈参,下面說下Android學(xué)習(xí)路線的話題呛牲,本文打算從4個(gè)階段來(lái)對(duì)Android的學(xué)習(xí)過程做一個(gè)全面的分析,分別為Android初級(jí)驮配、中級(jí)娘扩、高級(jí)以及資深工程師,具體請(qǐng)看下面的分析壮锻。同理琐旁,本篇學(xué)習(xí)路線仍然只針對(duì)Android應(yīng)用開發(fā),不針對(duì)Rom開發(fā)和逆向工程等猜绣。這里虛擬一位“小明”的角色旋膳,在這里小明就是Android初學(xué)者的代表。

初級(jí)工程師


有一天途事,小明又需要做一個(gè)動(dòng)畫相關(guān)的需求验懊,這可難不倒小明,它熟練地打開了www.baidu.com尸变,輸入“Android 動(dòng)畫”义图,突然他楞了一下:”總不能每次寫動(dòng)畫都要百度一下吧!“碱工,于是他在CSDN開了一個(gè)博客,把動(dòng)畫相關(guān)的知識(shí)點(diǎn)都寫上去奏夫,為的是后面再寫動(dòng)畫相關(guān)的代碼就不用百度去搜了怕篷,事實(shí)如何呢麻削?后面再寫動(dòng)畫相關(guān)的代碼叠荠,小明的確不用再去百度搜了蜘渣,因?yàn)橥ㄟ^寫一篇?jiǎng)赢嫴┛湍韪祝褎?dòng)畫相關(guān)的細(xì)節(jié)都已經(jīng)記住了街望,這樣他就可以不用再去參考任何文檔了,后來(lái)小明還學(xué)會(huì)了把一些瑣碎的不方便放在博客上的東西寫到了印象筆記上面,什么時(shí)候忘了10秒鐘以內(nèi)都可以快速找回來(lái),而不是花10分鐘去再次搜索一遍叶圃。

這里總結(jié)一下掺冠,Android入門的時(shí)候心赶,需要有一本入門書扣讼,好好學(xué)習(xí)書中的內(nèi)容座享,同時(shí)花一年時(shí)間把Android官方文檔中的training和guide看一遍盯捌,同時(shí)通過寫博客和記筆記的方式來(lái)做總結(jié)淳衙,建議讓自己的每篇博客都有價(jià)值些。通過一年時(shí)間的學(xué)習(xí)饺著,相信每個(gè)人都可以達(dá)到中級(jí)工程師的水平箫攀。

技術(shù)要求:

- 基本知識(shí)點(diǎn)

比如四大組件如何使用、如何創(chuàng)建Service幼衰、如何進(jìn)行布局匠童、簡(jiǎn)單的自定義View、動(dòng)畫等常見技術(shù)

- 書籍推薦

《第一行代碼 Android》塑顺、《瘋狂Android》

中級(jí)工程師

- AIDL:熟悉AIDL汤求,理解其工作原理,懂transact和onTransact的區(qū)別严拒;

- Binder:從Java層大概理解Binder的工作原理扬绪,懂Parcel對(duì)象的使用;

- 多進(jìn)程:熟練掌握多進(jìn)程的運(yùn)行機(jī)制裤唠,懂Messenger挤牛、Socket等;

- 事件分發(fā):彈性滑動(dòng)种蘸、滑動(dòng)沖突等墓赴;

- 玩轉(zhuǎn)View:View的繪制原理、各種自定義View航瞭;

- 動(dòng)畫系列:熟悉View動(dòng)畫和屬性動(dòng)畫的不同點(diǎn)诫硕,懂屬性動(dòng)畫的工作原理;

- 懂性能優(yōu)化刊侯、熟悉mat等工具

- 懂點(diǎn)常見的設(shè)計(jì)模式

學(xué)習(xí)方法

閱讀進(jìn)階書籍章办,閱讀Android源碼,閱讀官方文檔并嘗試自己寫相關(guān)的技術(shù)文章,需要有一定技術(shù)深度和自我思考藕届。在這個(gè)階段的學(xué)習(xí)過程中挪蹭,有2個(gè)點(diǎn)是比較困擾大家的,一個(gè)是閱讀源碼休偶,另一個(gè)是自定義View以及滑動(dòng)沖突梁厉。

如何閱讀源碼呢?這是個(gè)頭疼的問題踏兜,但是源碼必須要讀词顾。閱讀源碼的時(shí)候不要深入代碼細(xì)節(jié)不可自拔,要關(guān)注代碼的流程并盡量挖掘出對(duì)應(yīng)用層開發(fā)有用的結(jié)論庇麦。另外仔細(xì)閱讀源碼中對(duì)一個(gè)類或者方法的注釋计技,在看不懂源碼時(shí),源碼中的注釋可以幫你更好地了解源碼中的工作原理山橄,這個(gè)過程雖然艱苦垮媒,但是別無(wú)他法。

如何玩轉(zhuǎn)自定義View呢航棱?我的建議是不要通過學(xué)習(xí)自定義view而學(xué)習(xí)自定義view睡雇。為什么這么說呢?因?yàn)樽远xview的種類太多了饮醇,各式各樣的絢麗的自定義效果它抱,如何學(xué)的玩呢!我們要透過現(xiàn)象看本質(zhì)朴艰,更多地去關(guān)注自定義view所需的知識(shí)點(diǎn)观蓄,這里做如下總結(jié):

- 搞懂view的滑動(dòng)原理

- 搞懂如何實(shí)現(xiàn)彈性滑動(dòng)

- 搞懂view的滑動(dòng)沖突

- 搞懂view的measure、layout和draw

- 然后再學(xué)習(xí)幾個(gè)已有的自定義view的例子

- 最后就可以搞定自定義view了祠墅,所謂萬(wàn)變不離其宗

大概再需要1-2年時(shí)間侮穿,即可達(dá)到高級(jí)工程師的技術(shù)水平。我個(gè)人認(rèn)為通過《Android開發(fā)藝術(shù)探索》和《Android群英傳》可以縮短這個(gè)過程為0.5-1年毁嗦。注意亲茅,達(dá)到高級(jí)工程師的技術(shù)水平不代表就可以立刻成為高級(jí)工程師(受機(jī)遇、是否跳槽的影響)狗准,但是技術(shù)達(dá)到了克锣,成為高級(jí)工程師只是很簡(jiǎn)單的事。

技術(shù)要求:

- 稍微深入的知識(shí)點(diǎn)

AIDL腔长、Messenger袭祟、Binder、多進(jìn)程饼酿、動(dòng)畫榕酒、滑動(dòng)沖突胚膊、自定義View故俐、消息隊(duì)列等

- 書籍推薦

《Android開發(fā)藝術(shù)探索》想鹰、《Android群英傳》

高級(jí)工程師

小明成為了夢(mèng)寐以求的高級(jí)工程師,月薪達(dá)到了20k药版,還拿到了一丟丟股票辑舷。這個(gè)時(shí)候小明的Android水平已經(jīng)不錯(cuò)了,但是小明的目標(biāo)是資深工程師槽片,小明聽說資深工程師月薪可以達(dá)到30k+何缓。

為了成為Android資深工程師,需要學(xué)習(xí)的東西就更多了还栓,并且有些并不是那么具體了碌廓,如下所示:

- 繼續(xù)加深理解”稍微深入的知識(shí)點(diǎn)“中所定義的內(nèi)容

- 了解系統(tǒng)核心機(jī)制:

1. 了解SystemServer的啟動(dòng)過程

2. 了解主線程的消息循環(huán)模型

3. 了解AMS和PMS的工作原理

4. 能夠回答問題”一個(gè)應(yīng)用存在多少個(gè)Window?“

5. 了解四大組件的大概工作流程

6. …

- 基本知識(shí)點(diǎn)的細(xì)節(jié)

1. Activity的啟動(dòng)模式以及異常情況下不同Activity的表現(xiàn)

2. Service的onBind和onReBind的關(guān)聯(lián)

3. onServiceDisconnected(ComponentName className)和binderDied()的區(qū)別

4. AsyncTask在不同版本上的表現(xiàn)細(xì)節(jié)

5. 線程池的細(xì)節(jié)和參數(shù)配置

6. …

- 熟悉設(shè)計(jì)模式剩盒,有架構(gòu)意識(shí)

學(xué)習(xí)方法

這個(gè)時(shí)候已經(jīng)沒有太具體的學(xué)習(xí)方法了谷婆,無(wú)非就是看書、看源碼和做項(xiàng)目辽聊,平時(shí)多種總結(jié)纪挎,盡量將知識(shí)融會(huì)貫通從而形成一種體系化的感覺。同時(shí)這個(gè)階段對(duì)架構(gòu)是有一定要求的跟匆,架構(gòu)是抽象的异袄,但是設(shè)計(jì)模式是具體的,所以一定要加強(qiáng)下設(shè)計(jì)模式的學(xué)習(xí)玛臂。關(guān)于設(shè)計(jì)模式的學(xué)習(xí)烤蜕,最近一本新書推薦給大家《Android 源碼設(shè)計(jì)模式解析與實(shí)戰(zhàn)》,既可以學(xué)習(xí)設(shè)計(jì)模式迹冤,又可能體會(huì)到Android源碼中的設(shè)計(jì)思想讽营,我最近也在閱讀此書。

技術(shù)要求:

- 稍微深入的知識(shí)點(diǎn)

- 系統(tǒng)核心機(jī)制

- 基本知識(shí)點(diǎn)的細(xì)節(jié)

- 設(shè)計(jì)模式和架構(gòu)

- 書籍推薦

《Android開發(fā)藝術(shù)探索》叁巨、《Android 源碼設(shè)計(jì)模式解析與實(shí)戰(zhàn)》斑匪、《Android內(nèi)核剖析》

資深工程師

這個(gè)階段的程序員也許并沒有太具體的學(xué)習(xí)路線了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锋勺,一起剝皮案震驚了整個(gè)濱河市蚀瘸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌庶橱,老刑警劉巖贮勃,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異苏章,居然都是意外死亡寂嘉,警方通過查閱死者的電腦和手機(jī)奏瞬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)泉孩,“玉大人硼端,你說我怎么就攤上這事≡幔” “怎么了珍昨?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)句喷。 經(jīng)常有香客問我镣典,道長(zhǎng),這世上最難降的妖魔是什么唾琼? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任兄春,我火速辦了婚禮,結(jié)果婚禮上锡溯,老公的妹妹穿的比我還像新娘赶舆。我一直安慰自己,他們只是感情好趾唱,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布涌乳。 她就那樣靜靜地躺著,像睡著了一般甜癞。 火紅的嫁衣襯著肌膚如雪夕晓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天悠咱,我揣著相機(jī)與錄音蒸辆,去河邊找鬼。 笑死析既,一個(gè)胖子當(dāng)著我的面吹牛躬贡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播眼坏,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼拂玻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了宰译?” 一聲冷哼從身側(cè)響起檐蚜,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沿侈,沒想到半個(gè)月后闯第,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缀拭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年咳短,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了填帽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡咙好,死狀恐怖篡腌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情敷扫,我是刑警寧澤哀蘑,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布诚卸,位于F島的核電站葵第,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏合溺。R本人自食惡果不足惜卒密,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望棠赛。 院中可真熱鬧哮奇,春花似錦、人聲如沸睛约。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)辩涝。三九已至贸伐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間怔揩,已是汗流浹背捉邢。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留商膊,地道東北人伏伐。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像晕拆,于是被迫代替她去往敵國(guó)和親藐翎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 每一次發(fā)現(xiàn)好吃的好玩的好看的都會(huì)先拍下來(lái)实幕,老公的話吝镣,你這是在做秀,不是在做吃的茬缩,但這有什么所謂呢赤惊,我喜歡啊,這樣的...
    陳年玫玖閱讀 655評(píng)論 2 3
  • 逛商場(chǎng)時(shí)我又回到了這里 在一陣兒巴拉巴拉巴拉聲的講述過后 朋友問我凰锡,你是不是和你女朋友來(lái)都要把你在這兒打工的事跡都...
    他說他的魚要逆著游閱讀 385評(píng)論 0 0