Android架構 圖1 Android架構自上而下名稱為應用層、應用框架層、運行庫和Adroid虛擬機層、 Linux內核層。 1. 應用層 應用層像一座大廈裡面的磚瓦。我們所做的開發基本上都在應用層,在手機上應用層的軟體有桌面、簡訊、電話、瀏覽器、微信、扣扣等等這類軟體。應用層的軟體是在應用框架 ...
Android架構
圖1
Android架構自上而下名稱為應用層、應用框架層、運行庫和Adroid虛擬機層、 Linux內核層。
1. 應用層
應用層像一座大廈裡面的磚瓦。我們所做的開發基本上都在應用層,在手機上應用層的軟體有桌面、簡訊、電話、瀏覽器、微信、扣扣等等這類軟體。應用層的軟體是在應用框架層的規定和支持下開發。兩個意思 :a. 應用層會調用框架層提供的API進行開發,b.框架層會對應用層的軟體進行規範和管理,應用層的軟體是面向框架層開發的。 該層採用java開發。
2. 應用框架層
應用框架層像一座大廈的鋼筋結構。應用框架層提供了Android開發模式和所有安卓開發所需要的各個組件、API,並提供了管理功能。其中很多的組件API通過JNI調用了下一層的功能來實現。該層使用Java代碼實現。框架層也允許應用在安全的情況下向其他程式發佈service、Activity和數據。
- Activity Manager: 管理應用程式生命周期,提供通用的導航回退功能
- Window Manager: 主要用來管理視窗的一些狀態、屬性、view增加、刪除、更新、視窗順序、消息收集和處理等。
- Content Providers: 提供不同進程數據訪問和共用功能。
- Resource Manager: 提供訪問非代碼資源,如本地化字元串、圖形和佈局文件
- Notification Manager:使所有的應用程式能夠在狀態欄顯示自定義提示信息
3. 函數庫和Android運行時層
Android運行時是一座大廈的地基,函數庫像根。函數庫全部採用C/C++語言實現,為框架層提供功能API。框架層可以採用JNI的方式調用。函數庫需要調用Linux內核。
其重要的函數庫有:
- Libc:專門為嵌入式設備調整的標準C系統庫。
- SGL/openGL|ES:圖形引擎
- WebKit:瀏覽器引擎
- SQLite:輕量級關係資料庫
- Media Framework:多媒體播放、錄製框架。
- SurfaceManager:管理對顯示子系統的訪問。
- Freetype:點陣圖和向量字體顯示。
Android運行時包含一個核心庫和虛擬機程式,虛擬機程式是解釋執行android java位元組碼的程式。虛擬機程式有兩種,Dalvik和ART,Dalvik虛擬機提供了JIT技術(Just-in-time Compiler)在運行時編譯經常運行的位元組碼來提升應用的運行速度。在4.4以後提供了ART模式虛擬機,ART技術就是在安裝應用的時候會進行一次預編譯,將位元組碼轉換為機器語言存儲在本地,這樣在運行程式時就不會每次都進行一次編譯了,執行效率也大大提升,不過這也導致應用安裝時間變長。而每次啟動安卓系統的時候,系統都會進行所有應用的安裝,所以啟動速度變慢。每一個安卓應用程式都運行在一個虛擬機進程中。它把所有的進程和記憶體管理都交給了運行時,在有必要的時候,運行時會結束或者暫停進程,從而更有效的管理資源。
Android運行時和函數庫在linux內核之上,由內核來處理與底層硬體的交互。同時有一套API提供對所有底層服務、硬體和功能的訪問。
4. Linux內核層
Linux內核層像地球。該層就是一個linux內核+驅動。負責了記憶體管理、進程管理、協議棧和驅動模型等核心系統服務。
Android Application
1. 應用程式優先順序等於其優先順序最高的組件的優先順序。
2. 應用程式不等於進程。一個安卓應用,可以擁有多個進程.remote,process。
優先順序 |
|
活動進程 |
擁有與用戶交互的組件 以下幾種情況屬於活動進程 A. 處於onCreate、onStart、onDestroy的service B. 正在運行、標記為前臺運行的service C. 處於onReceive的BroadcastReceiver D. 活躍狀態的Activity |
可見進程 |
用戶可以看到,但是不能交互,就像Activity上有個彈窗。 |
服務進程 |
開啟了service的進程 |
後臺進程 |
不可見、沒有service的activity的進程。 |
空進程 |
只是為了緩存。 |
3. 如果應用程式A依賴於應用程式B的service或者provider,那麼優先順序肯定B>A
4. 能對應用程式級的廣播作出響應(低記憶體)。
5. 因為是應用程式級的單例模式對象,各種組件都能夠取得這個對象,所以可以用來傳遞數據、維護和管理數據,做一切想做的。
Application類事件回調
事件處理函數 |
|
onCreate |
創建時觸發 |
onLowMemory |
低記憶體事件觸發,無參數 |
onTrimMemory(int) |
Android 4.0之後提供的API,系統會根據不同的記憶體狀態來回調。會帶有int參數,表示現在的狀態 |
onConfigurationChanged(Configuration ) |
配置改變處理 |
6. 在運行時配置(例如語言、插入SIM卡、時區變換、旋轉屏幕等)改變時,不會像Activity那樣重啟。
轉載請註明出處:http://www.cnblogs.com/stonehat/