一轉眼工做也有幾年的時間了,一直想沉下心來,再回過頭來從新系統的學習一遍 Android。因此就有了這個讀書筆記。俗話說溫故而知新,下面就請你們再跟着我係統的學習一篇 Android 吧!html
這一系列主要參考 Android 入門經典----《第一行代碼》android
默認學習者會簡單的 Java 語法!Android 方面徹底從零開始!跟着我係統的學習吧!面試
2003 年 10 月,Andy Rubin 等人一塊兒創辦了 Android 公司。2005 年 8 月 Google 收購了這家公司。數據庫
Android 從面試以來到如今已經發布了二十多個版本了。在這幾年的發展過程當中。谷歌爲 Android 王國創建了一個完整的生態系統。手機廠商、開發者、用戶之間相互依存,共同推動着 Android 的蓬勃發展。編程
從開發者角度,去了解這個操做系統。api
爲了讓你可以更好的理解 Android 系統是如何工做的,咱們先來看一下它的系統架構。大體可分四層架構:Linux 內核層、系統運行庫層、應用框架層、應用層。瀏覽器
1.Linux 內核層安全
Android 系統是基於 Linux 內核的,這一層爲 Android 設備的各類硬件提供了底層的驅動,好比:顯示驅動、音頻驅動、照相機驅動、藍牙驅動、WiFi 驅動、電源管理等。網絡
主要是一些底層驅動架構
2.系統運行庫層
這一層經過一些 C/C++ 庫來爲 Android 系統提供了主要的特徵支持。如 SQLite 庫提供了數據庫的支持、OpenGL|ES 庫提供了 3D繪圖支持,Webkit 庫提供了瀏覽器內核的支持等。
一樣這一層還有 Android 運行時庫。主要提供了一些核心庫,可以使開發者使用 Java 語言來編寫 Android 應用。Android 運行時庫還包含了 Dalvik 虛擬機(5.0 系統以後改成了 ART 運行環境),它使得每個 Android 應用均可以運行在獨立的進程中,而且擁有一個本身的 Dalvik 虛擬機示例。相比 Java 虛擬機。Dalvik 虛擬機是專門爲移動設備定製的,針對手機內存、CPU 性能有限等狀況做了優化處理。
一些經過 C/C++ 編寫的庫,還有支持咱們使用 Java 開發的核心庫和進程運行的虛擬機
3.應用框架層
主要提供了構建應用程序時用到的各類 API,Android 自帶的一些核心應用就是使用這些 API 完成的,開發者也可使用這些 API 來構建咱們本身的應用程序。
4.應用層
全部安裝在手機上的應用程序就是屬於這一層了。
最新架構
Linux 內核
Android 平臺的基礎是 Linux 內核。例如,Android Runtime 須要依靠 Linux 內核來執行底層功能,例如線程和底層內存管理
使用 Linux 內核可讓 Android 利用主要安全功能,而且容許設備製造商爲著名的內核開發硬件驅動程序。
硬件抽象層(HAL)
提供標準界面,向更高級別的 Java API 框架顯示設備硬件功能。HAL 包含多個庫模塊,其中每一個模塊都爲特定類型的硬件組件實現一個界面。例如相機或藍牙模塊。當框架 API 要求訪問硬件時,Android 系統爲該硬件組件加載庫模塊。
Android Runtime
對於運行 Android 5.0 或者更高設備,每一個應用都在其本身的進程中運行,而且有本身的 Android Runtime 示例。ART 編寫爲經過執行 DEX 文件在低內存設備上運行的多個虛擬機。DEX 文件是一種專門爲 Android 設計的字節碼格式,通過優化,使用內存不多。編譯工具鏈(例如 Jack)將 Java 源代碼編譯爲 DEX 字節碼,使其能夠在 Android 平臺上運行。
ART 的部分主要功能:
預先(AOT)和即時(JIT)編譯
優化垃圾回收(GC)
更好的調試支持,包括專用採樣分析器、詳細的診斷異常、崩潰報告
還包含了一套核心運行時庫,可提供 Java API 框架使用的 Java 編程語言大部分功能。
原生 C/C++ 庫
許多核心 Android 系統組件和服務(例如 ART 和 HAL)是構建自原生代碼的,須要用 C 和 C++ 編寫的原生庫。Android 平臺提供 Java 框架 API 來嚮應用顯示其中的部分原始庫的功能。例如:經過 Android 框架 的 Java OpenGL API 訪問 OpenGL ES,以支持應用中繪製和操做 2D 和 3D圖形。
若是開發的是須要 C 或 C++ 代碼的應用,可使用 Android NDK 直接從原生代碼訪問某些原平生臺庫。
Java API 框架
您可經過以 Java 語言編寫的 API 使用 Android OS 的整個功能集。這些 API 造成建立 Android 應用所需的構建塊,它們可簡化核心模塊化系統組件和服務的重複使用,包括如下組件和服務:
豐富、可擴展的視圖系統,可用以構建應用的 UI,包括列表、網格、文本框、按鈕甚至可嵌入的網絡瀏覽器
資源管理器,用於訪問非代碼資源,例如本地化的字符串、圖形和佈局文件
通知管理器,可以讓全部應用在狀態欄中顯示自定義提醒
Activity 管理器,用於管理應用的生命週期,提供常見的導航返回棧
內容提供程序,可以讓應用訪問其餘應用(例如「聯繫人」應用)中的數據或者共享其本身的數據
開發者能夠徹底訪問 Android 系統應用使用的框架 API。
系統應用
2008 年 9 月,Google 正式發佈了 Android 1.0 系統。
2011 年 2 月,發佈了 Android 3.0 系統,專門爲平板電腦設計的,比較失敗。
2011 年 10 月 Android 4.0 ,這個版本再也不對手機和平板進行差別化區分。
2014 年 Google I/O 大會上,推出了改動最大的 Android 5.0 系統。使用 ART 運行環境代替了 Dalvik 虛擬機,大大提高了應用的運行速度,提出了 Material Design 概念。還推出了 Android Wear、Android Auto、Android TV 系統。從而進軍可穿戴設備、汽車、電視等領域。
2015 年 Google I/O 大會,推出 6.0 加入運行時權限功能。
2016 年 Google I/O 大會上推出 7.0 系統 ,加入多窗口模式
1. 四大組件
Activity、Server、Broadcast Receiver、Content Provider
Activity:應用程序的門面。
Server:默默的在後頭運行
Broadcast Receiver 運行你的應用接受來自各處的廣播消息,好比:電話、短信等,一樣咱們的應用也能夠向外部發送廣播消息。
Content Provider 應用程序之間共享數據提供了可能。好比讀取系統電話簿中的聯繫人。
2. 豐富的系統控件
系統提供了豐富的系統控件,使咱們輕鬆的編寫漂亮的界面。固然咱們也能夠本身定義控件。
3. SQLite 數據庫
系統自帶了輕量級、運算速度快的嵌入式關係型數據庫,支持標準的 SQL 語句,還能夠經過 Android 封裝好的 API 進行操做。
4. 強大的多媒體
提供了豐富的多媒體服務。如:音樂、視頻、錄音、拍照、鬧鈴。等等,這一切咱們均可以在程序中經過代碼來進行控制。
5. 地理位置定位
使用內置的 GPS 就能夠定位到本身的位置
持續更新......