這幾年,Android開始慢慢流行起來,很多項目也開始涉及這部分內容,所以學習Android也就變的很有意義了。
學什么
學習Android應該學什么,很多人有不同的見解。一般程序員可能只是學習Android的UI控件和Android的API使用等。高級程序員可能會研究一下Android的FrameWork和Android的實現原理。相對於這兩者,頂級的程序員會深入的了解Android的層次架構和設計思想並將這些架構和設計思想加以改造、優化之后應用在其他方面。你會怎么做呢?
Android層次架構
既然要學習Android,那么就要從最有魅力架構和設計理念開始。首先咱們先來看一下Android的架構設計圖,如下所示:

從上面圖中,我們可以看出,這個Android的架構從上到下分為四層,分別是應用程序層、應用程序框架層、系統運行庫層以及Linux內核層。
應用程序層
應用程序層主要包括一些應用程序,這一層可以簡單的理解為我們能夠在移動設備上看到的的各種軟件和應用。這些軟件和應用都是可以被程序開發人員開發的其他應用程序替換和更新的,這一點相對於早期固化在系統內部的移動端軟件更加的靈活和個性化。
應用程序框架層
應用程序框架層主要面對的是Android的應用開發人員,它為Android開發人員開發應用提供了許多可重用的組件,同時,它也允許開發人員替換這些組建。通過這一層,開發人員可以開發豐富的應用,開發人員開發的應用完全可以使用其他應用已開發的功能。
系統運行層
從上圖所示,系統運行層可以分為兩部分:一部分是Android提供的Lib庫,另一部分是Android的運行時。
所謂Lib庫,其實就是對應用程序框架層的支撐,它所實現的所有功能都是通過應用程序框架層對外提供,並將Linux內核和應用程序框架層進行連接。
Android的運行時類似於Java的運行時機制,可以分為API核心庫和一個類似於JVM的虛擬機Dalvk。這部分可以參考JVM進行理解和學習,這里不再贅述。
Linux內核層
Android從本質上來講,就是在Linux的基礎之上進行的一次封裝。通過利用Linux Kernel作為硬件和軟件之間的抽象層的,並其為上層提供的安全、內存管理、進程管理、網絡堆棧、驅動模型等服務的特性,Andorid最終實現了它最基礎的核心架構和設計。
通過上面的分析,我們可以清晰的認識到,Android的設計最核心的就是分層。但是如何分層這就是我們要關注的了,所以,學習Android不在於做出一個應用,而是通過學習Android分析它的架構,借鑒、完善、應用並創造價值。
學習最終要的不是學什么,而是想學什么,做人不在於你做什么,而是你想做什么。