Android学习指南
目錄
- 核心分析內(nèi)容
- 1、學(xué)什么
- 1.1、Android基礎(chǔ) & 常用
- 1.2、Android進(jìn)階
- 1.3、與時(shí)俱進(jìn)、熱門技術(shù)
- 1.4、編程語言:Java與Java虛擬機(jī)
- 1.5、計(jì)算機(jī)基礎(chǔ)
- 1.6、總結(jié)
- 2、怎么學(xué)
- 2.1、學(xué)習(xí)路徑:如何循序漸進(jìn)、階段性的學(xué)習(xí)Android的理論知識(shí)?
- 2.2、獲取途徑:有哪些高效的方式獲取Android理論知識(shí)?
- 2.3、學(xué)習(xí)方式:用什么方式記錄?
- 2.4、總結(jié)
- 3、怎么應(yīng)用Android知識(shí)?
- 3.1、該如何尋找項(xiàng)目?
- 3.2、如何將理論知識(shí)運(yùn)用到項(xiàng)目中 & 提高項(xiàng)目的質(zhì)量
- 具體執(zhí)行建議
- 總結(jié)
核心分析內(nèi)容
對于怎么學(xué)習(xí)Android,主要解決的是3個(gè)問題:學(xué)什么、怎么學(xué) & 怎么用。
具體如下:
下面,我將帶著上述幾個(gè)問題,詳細(xì)講解自身學(xué)習(xí)Android的方法和Android學(xué)習(xí)路徑。最后,還會(huì)結(jié)合前面內(nèi)容,給出綜合的具體執(zhí)行學(xué)習(xí)Android的建議。
1、學(xué)什么
面向Android初、中級開發(fā)者,對于要學(xué)習(xí)的Android理論知識(shí),我認(rèn)為主要包括:
- Android基礎(chǔ) & 常用
- Android進(jìn)階
- 與時(shí)俱進(jìn)、熱門技術(shù)
- 編程語言
- 計(jì)算機(jī)基礎(chǔ)
具體介紹如下:
1.1、Android基礎(chǔ) & 常用
針對Android基礎(chǔ)&常用知識(shí),按照優(yōu)先級最主要的知識(shí)點(diǎn)主要包括:四大組件、布局使用、多線程 & 動(dòng)畫。
具體介紹如下:
| 四大組件 | Android最基礎(chǔ)、最常用的四個(gè)組件 | ? 活動(dòng)(Activity) ? 廣播(Broadcast) ? 內(nèi)容提供者(ContentProvider) ? 服務(wù)(Service) |
| 布局使用 | 常用UI布局組件 | ? 框架布局(FrameLayout) ? 線性布局(LinearLayout) ? 絕對布局(AbsoluteLayout) ? 相對布局(RelativeLayout) ? 表格布局(TableLayout) ? 約束布局(ConstraintLayout) |
| 多線程 | 多線程操作、異步通信 | ? Thread、Runnable ? Handler ? AsyncTask ? IntentService ? HandlerThread |
| 動(dòng)畫 | 實(shí)現(xiàn)UI中的動(dòng)畫效果 | ? 補(bǔ)間動(dòng)畫 ? 屬性動(dòng)畫 ? 幀動(dòng)畫 ? 差值器 & 估值器 |
1.2、Android進(jìn)階
針對Android進(jìn)階知識(shí),按照優(yōu)先級最主要的知識(shí)點(diǎn)主要包括:自定義View、性能優(yōu)化。
具體介紹如下:
| 自定義View | 自定義試圖組件 & 動(dòng)畫 | ? 自定義View流程(measure、layout、draw) ? 時(shí)間分發(fā)機(jī)制 ? 自定義動(dòng)畫 & 組件 |
| 性能優(yōu)化 | 性能優(yōu)化的目的是為了讓應(yīng)用程序App更快、更穩(wěn)定 & 更省電 | ? 內(nèi)存優(yōu)化 ? 內(nèi)存泄漏 ? 繪制優(yōu)化 ? 布局優(yōu)化 |
1.3、與時(shí)俱進(jìn)、熱門技術(shù)
除了基礎(chǔ)日常使用的Android知識(shí),我們還需時(shí)刻關(guān)注行業(yè)動(dòng)態(tài),與時(shí)俱進(jìn)的學(xué)習(xí)新技術(shù),如近些年來較為熱門的Android新興技術(shù)包括:Flutter、熱修復(fù)、插件化 等;
同時(shí),了解 & 學(xué)習(xí)常用的開源庫也十分重要,常用的開源庫主要包括 圖片加載、網(wǎng)絡(luò)請求、 異步處理 的開源庫。
具體類型如下:
| 圖片加載 | 加載顯示圖片 | ? glide ? fresco ? picasso ? Android-Universal-Image-Loader |
| 網(wǎng)絡(luò)請求 | 與服務(wù)器快速實(shí)現(xiàn)網(wǎng)絡(luò)請求 | ? Retrofit ? okhttp ? volley |
| 異步處理 | 快速實(shí)現(xiàn)異步通信、響應(yīng)式編程 | ? RxJava ? RxAndroid ? RxBinding ? EventBus |
1.4、編程語言:Java與Java虛擬機(jī)
Android是基于Java的,所以學(xué)習(xí)Java和Java虛擬機(jī)(JVM)十分重要。
學(xué)習(xí)Java不需要類似后端那么深入,我認(rèn)為作為Android開發(fā)者,學(xué)習(xí)的內(nèi)容包括:語言特性、基礎(chǔ)使用、集合類和機(jī)制。
具體介紹如下:
| 語言特性 | Java特有的語法特性 | ? 面向?qū)ο蟮?個(gè)特征與含義 ? 多態(tài)的實(shí)現(xiàn)原理 ? 基本數(shù)據(jù)類型、相關(guān)操作和封裝類 ? 4種引用:強(qiáng)、軟、弱、虛 & 應(yīng)用場景 |
| 基礎(chǔ)使用 | Java常見的使用類/方法 | ? 基本數(shù)據(jù)類型、相關(guān)操作和封裝類 ? Object類、String類、抽象類(Abstract) ? Static關(guān)鍵字 ? 接口(Interface) |
| 集合類 | Java中與集合相關(guān)的類 & 使用 | ? Collection類、Arrays類 ? List、Set、Queue、Stack、Map的特點(diǎn)與用法 ? Vector、ArrayList、LinkedList的存儲(chǔ)特性 & 區(qū)別 ? Map相關(guān):HashMap、LinkedHashMap、TreeMap、HashTable、ConcurrentHashMap |
| 機(jī)制 | Java特定機(jī)制的使用 | ? 多線程:Thread與Runnable、ThreadLocal、線程池ThreadPool ? 線程同步:sychronized、同步鎖(sychronized) ? 反射 ? JNI ? IO與NIO ? 泛型 |
對于Java虛擬機(jī)(JVM),屬于底層 & 原理性的內(nèi)容,具體介紹 & 學(xué)習(xí)的內(nèi)容包括:
1.5、計(jì)算機(jī)基礎(chǔ)
除了學(xué)習(xí)Android特定技術(shù)外,對于程序員來說,最基本的計(jì)算機(jī)基礎(chǔ)素養(yǎng)也十分重要的,主要包括 數(shù)據(jù)結(jié)構(gòu)、 算法 和 計(jì)算機(jī)網(wǎng)絡(luò)。
具體介紹如下:
| 數(shù)據(jù)結(jié)構(gòu) | 相互之間存在一種或多種關(guān)系的數(shù)據(jù)元素的集合 | ? 線性表&特殊線性表(棧和隊(duì)列) ? 樹、二叉樹 ? 串、字符串 ? 圖 ? 查找 ? 排序 |
| 算法 | 解決特定問題的求解步驟 | 對應(yīng)每種數(shù)據(jù)結(jié)構(gòu)的多種常見算法 |
| 計(jì)算機(jī)網(wǎng)絡(luò) | 網(wǎng)絡(luò)通信相關(guān) | ? 計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)(5層 & 7層) ? TCP / IP協(xié)議、UDP協(xié)議 ? HTTP協(xié)議 ? Socket |
1.6、總結(jié)
至此,關(guān)于入門Andriod需學(xué)習(xí)的內(nèi)容講解完畢,總結(jié)如下:
2、怎么學(xué)
對于怎么學(xué)習(xí)Android知識(shí),此處分為3個(gè)子問題:
- 學(xué)習(xí)路徑:如何循序漸進(jìn)、階段性的學(xué)習(xí)Android的理論知識(shí)?
- 獲取途徑:有哪些高效的方式獲取Android理論知識(shí)?
- 學(xué)習(xí)方式:用什么方式記錄?怎么樣去記錄?
下面將具體介紹:
2.1、學(xué)習(xí)路徑:如何循序漸進(jìn)、階段性的學(xué)習(xí)Android的理論知識(shí)?
- 既然已經(jīng)知道要學(xué)習(xí)哪些內(nèi)容了,下面,該解決的是:學(xué)習(xí)路徑,即什么階段該學(xué)習(xí)什么內(nèi)容。
- 對于Android知識(shí)學(xué)習(xí)階段,我認(rèn)為是和Android開發(fā)水平相結(jié)合的,只要掌握了哪部分知識(shí),就代表你處于Android開發(fā)的哪個(gè)階段。
- 我將Android開發(fā)水平分為:初、中、高 & 高級以上。
具體對應(yīng)的知識(shí)內(nèi)容如下:
| 初級 | 最基礎(chǔ)的Android知識(shí) | ? 定性認(rèn)識(shí):知識(shí)的了解 ? 定量使用:知識(shí)的實(shí)際使用 | ? 基礎(chǔ) ? 廣度 | ? Android基礎(chǔ)使用(如四大組件) ? Android常見機(jī)制(如多線程、動(dòng)畫等) ? Java ? 編程通用:數(shù)據(jù)結(jié)構(gòu)、算法、網(wǎng)絡(luò) |
| 中級 | 基礎(chǔ)學(xué)習(xí)中更深一步的探索 | ? 高級應(yīng)用 ? 源碼分析 ? 新技術(shù)的使用 | ? 深度 ? 與時(shí)俱進(jìn) | ? 底層工作機(jī)制的原理 ? 自定義View ? 性能優(yōu)化 ? 熱定技術(shù):開源庫、熱修復(fù)、插件化 |
| 高級 | 專注于某一垂直領(lǐng)域(如音視頻、性能優(yōu)化) | 特定領(lǐng)域的知識(shí)深入 | ? 某一垂直領(lǐng)域 ? 機(jī)具深度 & 門檻 | 專注解決特定領(lǐng)域的技術(shù)問題 |
| 高級以上 | 技術(shù)專家 | 繼續(xù)深入研究特定領(lǐng)域 | 更加深入某一垂直領(lǐng)域 | ? 專注解決特定領(lǐng)域的技術(shù)問題 ? 會(huì)產(chǎn)出 & 開源庫 & 組件 |
| 高級以上 | 架構(gòu)師 | 在更高的層面解決項(xiàng)目難點(diǎn) / 業(yè)務(wù)問題 | 專注于整體技術(shù)架構(gòu) | ? 技術(shù)架構(gòu)設(shè)計(jì) ? 具體業(yè)務(wù)的解決方案 |
| 高級以上 | 管理層 | 面向團(tuán)隊(duì)、業(yè)務(wù) & 產(chǎn)品 | 具備管理團(tuán)隊(duì)、統(tǒng)籌產(chǎn)品方向的屬性 | ? 管理能力 ? 業(yè)務(wù)能力 ? 產(chǎn)品能力 |
2.2、獲取途徑:有哪些高效的方式獲取Android理論知識(shí)?
既然已經(jīng)知道要學(xué)習(xí)哪些內(nèi)容了,下面,我將列舉一些學(xué)習(xí)這些理論知識(shí)的有效途徑。
對于獲取Android知識(shí),我認(rèn)為最有效的途徑是:書籍 > 視頻 > 技術(shù)博客 > 公眾號(hào)。
具體介紹如下:
| 書籍 | 具備完整知識(shí)體系、講解全面的獲取知識(shí)途徑 | 成知識(shí)體系、循序漸進(jìn)的學(xué)習(xí) | ? Android:《第二行代碼》、《Android開發(fā)藝術(shù)探索》 ? Java:《Java編程思想》 ? JVM:《深入理解Java虛擬機(jī)》 ? 數(shù)據(jù)結(jié)構(gòu):《大話數(shù)據(jù)結(jié)構(gòu)》 ? 算法:《劍指Offer》、Leetcode網(wǎng)站刷題 ? 計(jì)算機(jī)網(wǎng)絡(luò):《計(jì)算機(jī)網(wǎng)絡(luò)》(第五版) |
| 視頻 | ? 更加生動(dòng)、清晰的講解知識(shí) & 實(shí)踐 ? 較大的缺點(diǎn):耗費(fèi)時(shí)間較長 | 學(xué)習(xí)難度較高的知識(shí) | 在線學(xué)習(xí)網(wǎng)站對應(yīng)的Android學(xué)習(xí)課程(極客學(xué)院 & 慕課網(wǎng)) |
| 技術(shù)博客 | 針對某個(gè)知識(shí)點(diǎn)進(jìn)行講解 | 目的性搜索、深入學(xué)習(xí) | ? 技術(shù)社區(qū):CSDN、稀土掘金、簡書 |
| 公眾號(hào) | 針對某個(gè)知識(shí)點(diǎn)進(jìn)行講解(由于鑲嵌在微信,所以容易鏈接到外部更多的渠道) | 適合碎片化學(xué)習(xí) | Android公眾號(hào) |
關(guān)于通過公眾號(hào)的學(xué)習(xí),本人的微信公眾號(hào):carson帶你解析Android,希望能讓大家系統(tǒng)的學(xué)習(xí)上述說的Android理論知識(shí)。
2.3、學(xué)習(xí)方式:用什么方式記錄?
很多人看完書籍看完博客后當(dāng)時(shí)很理解,但過一段時(shí)間就十分容易忘記。
所謂“好記性不如爛筆頭”,我認(rèn)為,最好的記錄方式就是將學(xué)習(xí)到的知識(shí)記錄下來,我強(qiáng)烈推薦:撰寫技術(shù)博客。
對于技術(shù)博客的介紹如下:
撰寫技術(shù)博客好處多多,主要包括:
| 提高開發(fā)效率 | ? 復(fù)雜使用的流程化:記錄下繁雜的使用流程,下次再次使用時(shí)按部就班直接復(fù)用即可,常見的有:開源庫的使用、某類需求的具體實(shí)現(xiàn)過程 ? Bug的快速解決:記錄下問題發(fā)生的場景 & 解決方案,不僅能避免重復(fù)采坑,就算采坑了也能快速解決 |
| 保證真正的掌握知識(shí) | ? 只有做到以下3步我才認(rèn)為是真正掌握了知識(shí):敲代碼實(shí)現(xiàn)、清晰表達(dá) & 讓別人聽懂 ? 但大部分開發(fā)者都停留在第一步(敲代碼實(shí)現(xiàn)),你得清楚明白:敲代碼實(shí)現(xiàn) & 用語言表達(dá)出來是兩碼事 ? 所以在整個(gè)過程中是非常能鍛煉自己的思維能力 & 表達(dá)能力 |
| 加深對知識(shí)的思考 | ? 在寫作過程中,你會(huì)不斷思考知識(shí)的各個(gè)方面 為什么?因?yàn)槿绻伎嫉膹V度 & 深度不夠,文章是沒法繼續(xù)寫下去的 ? 這大概也是很多人沒法堅(jiān)持下來的原因:因?yàn)闋恳话l(fā)而動(dòng)全身,知識(shí)總是從1個(gè)點(diǎn)擴(kuò)散到整個(gè)面的,最終需完成的文章內(nèi)容遠(yuǎn)遠(yuǎn)超出你的想象 |
| 保證知識(shí)的正確性 | ? 自己的認(rèn)知能力有限,所以對知識(shí)的理解總有偏差 ? 當(dāng)分享出來博客后,良好的Android技術(shù)社區(qū)氛圍能及時(shí)糾正你錯(cuò)誤的理解,保證你的認(rèn)知是正確的 |
當(dāng)然,還有一些其他福利,如:
| 提供影響力 | 當(dāng)大量產(chǎn)出優(yōu)質(zhì)文章后,在Android領(lǐng)域的知名度 & 影響力就會(huì)提高、對自己在職場上的地位會(huì)有所幫助,這是一種莫大的榮譽(yù)感 |
| 結(jié)識(shí)人脈 | 相對其他職業(yè)來說,程序猿較為封閉,即對電腦多、面向人較少;通過博客、Github等這些公開渠道,能結(jié)識(shí)更多的開發(fā)者 |
| 知識(shí)共享 | Android與IOS其中一個(gè)較大區(qū)別 = 開源,作為一名Android開發(fā)者,應(yīng)秉著谷歌、Android開源的精神,將有用的知識(shí)分享給大家、幫助更多的Android開發(fā)者 & 共同學(xué)習(xí),推進(jìn)整個(gè)Android技術(shù)圈的進(jìn)步 |
2.4、總結(jié)
3、怎么應(yīng)用Android知識(shí)?
- 理論結(jié)合實(shí)踐、學(xué)以致用才能更好地獲取知識(shí),對于深入理解Android,最好的實(shí)踐就是 將理論知識(shí)運(yùn)用到Android項(xiàng)目中
- 所以,此處可以轉(zhuǎn)化成兩個(gè)問題:
- 該如何尋找項(xiàng)目?
- 如何將理論知識(shí)運(yùn)用到項(xiàng)目中 & 提高項(xiàng)目的質(zhì)量
下面我將詳細(xì)回答這兩個(gè)問題
3.1、該如何尋找項(xiàng)目?
此處我給出3個(gè)方向:
- 學(xué)校:課程設(shè)計(jì)、社團(tuán)組織
- 公司:實(shí)習(xí)、正職、創(chuàng)業(yè)
- 技術(shù)社區(qū):開源項(xiàng)目
| 學(xué)校 | ? 課程設(shè)計(jì):請認(rèn)真對待大學(xué)專業(yè)對于你職業(yè)相關(guān)課程的大作業(yè)(如Java、Android、數(shù)據(jù)結(jié)構(gòu)),因?yàn)樗赡軙?huì)成為你一個(gè)不可多得的項(xiàng)目經(jīng)驗(yàn) ? 社團(tuán)組織:多參與校內(nèi)官方組織 & 社團(tuán)組織,注重尋找具備校內(nèi)影響力較大的產(chǎn)品的所屬組織,因?yàn)樵谀抢锬隳苷业揭粋€(gè)具備落地實(shí)踐的開發(fā)經(jīng)歷 & 一群靠譜、能在職場上給予你很多幫助的開發(fā)團(tuán)隊(duì) |
| 公司 | ? 實(shí)習(xí):如果你還是在校大學(xué)生,請安排好自己的大學(xué)上課時(shí)間,嘗試出去公司參與擁有大量用戶、真正的項(xiàng)目,特別是知名公司,對于在校大學(xué)生來說,這部分項(xiàng)目經(jīng)歷是含金量的提高。 ? 正職:如果你已經(jīng)是正職員工,那么做好手頭上的項(xiàng)目是你實(shí)踐最好的方式。 ? 創(chuàng)業(yè):這是能最大程度鍛煉你全方面的能力,含:技術(shù)專業(yè)能力 & 基礎(chǔ)能力;但這是一個(gè)可遇不可求的機(jī)會(huì):找到靠譜的團(tuán)隊(duì) & 有前景的方向,若有這樣的機(jī)會(huì),個(gè)人非常建議去嘗試;假設(shè)最后能拿到投資,含金量是非常非常高、最能鍛煉人的。 |
| 技術(shù)社區(qū) | ? 來源:自己的項(xiàng)目、當(dāng)前技術(shù)熱點(diǎn)/開源庫、仿照主流的app; ? 內(nèi)容:完整App、某個(gè)功能模塊、UI組件等; ? 開源處:主流技術(shù)社區(qū) = Github、CSDN、稀土掘金、簡書 |
3.2、如何將理論知識(shí)運(yùn)用到項(xiàng)目中 & 提高項(xiàng)目的質(zhì)量
我認(rèn)為,**項(xiàng)目中的所有功能 & 業(yè)務(wù)實(shí)現(xiàn)都是基于上述說的Android知識(shí)的,關(guān)鍵是在于:**是否能選擇對的知識(shí)點(diǎn) & 組合實(shí)現(xiàn)思路。
提高項(xiàng)目質(zhì)量,即提高項(xiàng)目含金量、增加技術(shù)含量 & 亮點(diǎn),下面主要是從項(xiàng)目**本身的意義、實(shí)現(xiàn)方式、性能優(yōu)化** & 影響力 4個(gè)方面
| 意義 | 盡可能的讓自己的項(xiàng)目使用的技術(shù)往學(xué)習(xí)到的知識(shí)點(diǎn)靠攏 | |
| 實(shí)現(xiàn)方式 | ? 具備一定的技術(shù)難點(diǎn) & 技術(shù)技巧,而不是簡單實(shí)現(xiàn) ? 如:使用了某種新技術(shù)、新的開源庫 | 若無難點(diǎn),要學(xué)會(huì)自己去制造難點(diǎn) |
| 性能優(yōu)化 | 對項(xiàng)目在性能上提出要求 & 提出解決方案 | 與同類項(xiàng)目、一般要求的區(qū)別開來 |
| 影響力 | 盡可能讓項(xiàng)目可落地 & 具備一定的用戶基數(shù); ? 具備一定的影響力 & 知名度 |
具體執(zhí)行建議
個(gè)人認(rèn)為最高效的執(zhí)行方式是:以做項(xiàng)目為主、知識(shí)體系學(xué)習(xí)為輔,將技術(shù)博客作為一種學(xué)習(xí)的方式。
具體理解的是:
總結(jié)
至此,關(guān)于我對Android學(xué)習(xí)內(nèi)容、方向 & 具體實(shí)踐方式 講解到這里,此處作個(gè)簡單總結(jié):
憑借這樣的學(xué)習(xí)方式,有幸獲得騰訊、阿里巴巴、今日頭條等Android客戶端offer,所以,我將自己的一套Android學(xué)習(xí)方式總結(jié)出來分享給大家,希望各位也能獲得心儀的offer!
總結(jié)
以上是生活随笔為你收集整理的Android学习指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Androud 如何有效减少重复代码
- 下一篇: Android 动态计算ListView