Adnroid体系与系统架构
Google生態系統
Android系統架構
Android系統架構的經典示意圖
它將Android大致分為四層:
Android的體系架構鼓勵系統組件的重用,共享組件間的數據,并且定義組件間的訪問權限控制。可以說這些層次結構既是相互獨立又是相互關聯的。
Linux層
**Linux層,**Andorid最底層最核心的部分,**包含了Android系統的核心服務,包括硬件驅動、進程管理、安全系統等等**- Dalvik and ART
Dalvik包含了一整套的Adnroid運行環境虛擬機,每個App都會分配Dalvik虛擬機來確保相互之間不受干擾,并保持獨立。 Dalvik的特點是運行時編譯。
ART: 在Android 5.X的版本開始,ART模式已經取代了Dalvik,ART采用的是安裝時編譯,以后運行時就不用編譯了。
當讓了,對在其虛擬機環境中運行的大部分APP來講,他們都運行著相同的代碼。
- Application Framework
應用框架層
Framework層為我們程序開發提供了非常方便的API,
我們可以稱Framework層才真正是Java語言實現的層,在這層里定義的API都是用Java語言編寫。但是又因為它包含了JNI的方法,JNI用C/C++編寫接口,根據函數表查詢調用核心庫層里的底層方法,最終訪問到Linux內核。
那么Framework層的作用就有2個。
1.用Java語言編寫一些規范化的模塊封裝成框架,供APP層開發者調用開發出具有特殊業務的手機應用。
2.用Java Native Interface調用core lib層的本地方法,JNI的庫是在Dalvik虛擬機啟動時加載進去的,Dalvik會直接去尋址這個JNI方法,然后去調用。
2種方式的結合達到了Java方法和操作系統的相互通信。
簡單的介紹下Framework層部分框架的功能:
Activity Manager
用來管理應用程序生命周期并提供常用的導航回退功能。
Window Manager
提供一些我們訪問手機屏幕的方法。屏幕的透明度、亮度、背景。
Content Providers
使得應用程序可以訪問另一個應用程序的數據(如聯系人數據庫), 或者共享它們自己的數據。
View System
可以用來構建應用程序, 它包括列表(Lists),網格(Grids),文本框(Text boxes),按鈕(Buttons), 甚至可嵌入的web瀏覽器。
Notification Manager
使得應用程序可以在狀態欄中顯示自定義的提示信息。
Package Manager
提供對系統的安裝包的訪問。包括安裝、卸載應用,查詢permission相關信息,查詢Application相關信息等。
Telephony Manager
主要提供了一系列用于訪問與手機通訊相關的狀態和信息的方法,查詢電信網絡狀態信息,sim卡的信息等。
Resource Manager
提供非代碼資源的訪問,如本地字符串,圖形,和布局文件(Layout files )。
Location Manager
提供設備的地址位置的獲取方式。很顯然,GPS導航肯定能用到位置服務。
XMPP
可擴展通訊和表示協議。前身為Jabber,提供即時通信服務。例如推送功能,Google Talk。
………等等
- Standard libraries
這里包含的是Adnroid中的一些標準庫。 Application
What Android Is
Android App 組件框架
四大組件: Activity 、Service、ContentProvider、 BroadCastReciever .
Android四大組件是如何協同工作
Intent
Activity作為人機交換的第一界面,負責向用戶展示信息和處理結果,而這些信息的來源可以通過資源獲取,也可以通過ContentProvider來獲取其他應用的信息,或者Service從后臺獲取,當然了也可以是通BroadCastReciever獲取到的廣播信息。
組件和組件之間通過Intent通信、傳遞信息、交換數據,形成了各自獨立又緊密聯系的關系。
應用運行上下問對象
context
Android系統的上下文對象,即在Context中。
Activity Service Application 都繼承自Context。
Android應用程序輝仔如下所示的時間點創建應用上下文Context。
- 創建Application
- 創建Activity
- 創建Application
從中我們可以看出,創建Context的時機就是在創建Context實現類的時候。
當應用程序第一次運行時,Android系統都會創建一個Application對象,同時創建Application Context對象,所有的組件都共同擁有這樣一個Context對象,這個應用上下文對象貫穿整個應用進程的生命周期,為應用全局提供了功能和環境支持。
而創建Activity和Service時,系統也會為他們提供運行時的上下文環境,即創建Activity實例、Service實例的Context對象。
所以,我們可用直接在Activity中直接通過this的方式獲取Context對象,而在匿名內部類中,就必須使用 XXXActivity.this的方式才可以獲取Context對象。
當然 你也可以通過getApplicationContext()方法獲取整個APP的Context對象,但是通過getApplicationContext()獲取到的Context是整個應用的上下問對象,這個與某個組件的上下文對象在某些時候還是有區別的。
Adnroid系統源代碼目錄和系統目錄
源碼目錄啥的暫時略過吧,目前也鉆研不懂,等回頭有精力了再來膜拜。
總結
以上是生活随笔為你收集整理的Adnroid体系与系统架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Imageloader6-mUIHand
- 下一篇: Android Application