1.Java基礎
不少朋友一上手就開始學習Android,彷佛太着急了一些。Android應用程序開發是以Java語言爲基礎的,因此沒有紮實的Java基礎知識,只是機械的照抄別人的代碼,是沒有任何意義的。那麼Java學到什麼程度纔算是過關呢?我我的認爲至少要掌握如下兩個方面的內容:
a) Java基礎語法:具體的知識點列表能夠在這裏下載:《Java知識點列表》V1.0。這部份內容沒有討價還價的餘地,必須爛熟於胸。至於具體的學習方法,能夠看書或者是看視頻,可是關鍵是要多加練習,不管是書上的練習仍是視頻裏面的練習,都須要仔仔細細的完成;
b)設計模式:因爲在Android系統的框架層當中,使用了大量的設計模式,若是沒有這個方面的知識,對於Android的理解就會大打折扣。設計模式的種類很是之多,一個一個的所有掌握,是不現實的,必須首先掌握面向對象的基礎設計原則,有了這些基礎原則的支持,就能夠觸類旁通。這部份內容能夠在《Effective Java》和《Agile.Software.Development:Principles,Patterns.and.Practices》這兩本書中找到。
2.Linux基礎知識
你們都知道,Android系統的基礎是Linux操做系統。在開發過程中,咱們也須要使用到一些Linux命令。因此說一些Linux的基礎知識是必須的(話說如今的程序員,不懂Linux都很差意思跟人家打招呼),推薦你們看看《鳥哥的私房菜》這本書,寫的至關不錯;
3.數據庫基礎知識
這個比較簡單,就是一個增刪改查的數據庫操做,能夠看一下這本書:《SQL編程練習與解答》
4.網絡協議
至少須要學習兩種基礎的協議,HTTP協議與Socket協議;
5.Android基礎知識
有了以上的鋪墊,再來看Android,是否是以爲輕鬆了不少呢?至於基礎知識的學習順序,最好的方法就是按照Android SDK幫助文檔當中的Dev Guide裏面的順序,個人《Android視頻教程》也基本上是按照這個順序錄制的;
6.服務器端開發知識
因爲不少Android應用程序都須要服務器端的支持,因此掌握一些服務器端開發知識仍是很是有必要的。至於選擇哪種服務器端知識進行學習,就比較麻煩了,由於技術的種類實在是太多了:
a)Java EE:就是上面郵件當中所提到的SSH—Struts+Spring+Hibernate。這種技術的優勢的功能完整、強大,已經使用了不少年,並且既然你們已經很是熟悉Java了,那麼學習SSH看起來也瓜熟蒂落。可是使用這種技術開發服務器端程序,很是麻煩。即便是一些簡單的功能,也可能須要大量的代碼和配置文件來實現;
b)PHP:簡單易學,開發快速。可是咱們須要多學一種語言,是否得不償失,就要你們本身判斷了;
c).NET:這項技術的特色和Java EE差很少,可是要想掌握.NET,則須要掌握c#,也是個麻煩的事情;
d)ruby on rails:這是我我的最喜歡的服務器端技術,簡潔,優雅,寥寥幾行代碼,就能夠實現很複雜的功能,可是這須要Ruby語言知識做爲基礎;
至於選擇哪種技術,就看你們本身的判斷了。
夢想:要成爲一個專業的Android開發者,以上的這些知識都必不可少。看起來好像不少,多的可怕。因此仍是那句話--「耐心,耐心很重要」。java
附表:java知識點列表:程序員
1 開發環境數據庫
Java SDK 下載和安裝
環境變量的配置(path和classpath)編程
2編程基礎:c#
標識符命名規範
Java數據類型
運算符與表達式
分支語句(if,switch)
循環語句(for,while)
函數的定義方法設計模式
2面向對象基礎:ruby
面向對象與面向過程語言之間的區別3面向對象高級:服務器
面向對象基本思想(繼承)
繼承的做用
繼承的語法特色
super的使用方法
面向對象基本思想(多態)
對象的向上轉型和向下轉型
final關鍵字的做用
抽象類和接口的定義方法
接口和抽象類的語法特徵
抽象類和接口在面向對象編程當中的地位和意義網絡
設計模式(工廠方法模式)
Java當中異常的定義
異常的分類以及各自的特色
try…catch…finally 結構的處理方法
throw和throws 的使用方法
自定義異常的使用方法
內部類的定義方法
匿名內部類的定義方法
內部類的常見使用方法框架
4線程:
線程的基本定義
在 Java 當中實現線程的兩種方法(使用Thread 或Runnable)
線程運行狀態介紹(準備,運行,阻塞,死亡)
線程間通訊的方法
線程同步
線程死鎖
5IO
IO 基本概念:
輸入流和輸出流的做用
Java當中IO 流的分類方法
常 見 IO 類的使用方法(File,FileInput,FileOutput,Reader,Writer以及其子類的使用方法)
6常見類庫:
類集框架中常見類的使用方法(ArrayList,LinkedList,Queue,Stack,HashSet,HashMap)
日期相關類的使用方法(Data,DataFormat,Calander)