android體系結構介紹:如圖:
l 應用程序(application)
l 應用程序框架(Application Framework)
l 各種庫和android運行環境
l 操作層OS
Ø 應用程序(application):android的應用程序通常涉及用戶界面和交互;
Ø 應用程序框架(application Framework):
1. 一組view(UI組件):這些UI組件包括List、textbox、button;
2. Content Provider:提供一種機制,通過這個機制應用程序可是實現數據庫共享和互訪;
3. Resourse Manager:負責管理非代碼的訪問,如圖片、xml以及國際化資源文件;
4. Notification Manager:讓程序將警示信息顯示在狀態欄上;
5. Activity Manager:管理著應用程序的生命周期,提供瞭應用程序頁面的退出機制,一個應用程序由多個頁面你組成,而每個頁面的單位就是Activity,android應用程序是由多個activity的交互構成;
Ø 庫(Libraries)和運行環境(Run Time):
1. 系統C庫:一個從BSD 繼承來的標準C系統函數庫(LibC),他是專門基於嵌入式Linux的設備定制的;
2. 媒體庫:基於packet Video OpenCORE,該庫支持多種常用的音頻、視頻格式回放和錄制,同時支持靜態圖像文件;
3. Surface Manager:對顯示子系統的管理,並且為多個應用提供瞭2D和3D圖層的無縫融合;
4. Lib WebCore:一個最新的web瀏覽器引擎, 用來支持android瀏覽器和一個可嵌入的web試圖;
5. SGL:底層的2D圖引擎;
6. 3D libraries:基於openGL ES 1.0 apis實現,該庫可以用硬件3d加速或者使用高度優化的3D軟加速;
7. FreeType:位圖(bitmap)和vector字體顯示;
8. Sqlite:關系型數據庫;
每個android應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例,Dalvik被設計成一個設備,可以同時高效的運行多個虛擬機設備。Dalvik虛擬機執行的(.dex)Dalvik可執行文件,該格式文件針對小內存使用做瞭優化。同時虛擬機是基於寄存器的,所有的類都經過由Java 編譯器,然後通過sdk的“dx”工具轉化成dex格式,有虛擬機執行。
Android應用程序介紹:
一般android應用程序包括以下四個部分:
l Activity
l Broadcast Intent Receiver
l Service
l Content Provider
1. Activity介紹:
Activity一般代表手機屏幕的一屏,相當於瀏覽器的一個頁面。當打開一個屏幕時,之前的那一個屏幕會被置為暫停狀態,並且壓入歷史堆棧中,用戶可以通過回退操作返回到以前打開過的屏幕。
開發時需要選擇行的移除沒有必要保留的屏幕,因為打開後的屏幕會保存在堆棧中
Android的生命周期:即“產生、運行、銷毀”
Intent和Intent Filter介紹:一個Intent就是一次對將要執行的操作的抽象描述,通過Intent可以在多個Activity之間進行跳轉,Intent兩個最重要的部分是動作(action)和動作對應的數據,典型的動作類型有,MAIN、view、pick、edit等,而動作對應的數據則以URI的形式表示;例如有兩個activity分別為A和B,要從A跳轉到B可以這樣寫
Intent intent = new Intent(A.this, B.class);
startActivity(intent);
與Intent有關聯的類叫做Intent Filters,如果Intent是一個請求,一個Intent Filters描述改組件所能相應Activity請求的能力。
2. Broadcast Intent Receiver介紹:
可以使用BroadcastReceiver來讓應用對外一個外部的事件作出響應。BroadcastReceiver通過NotificationManager來通知用戶這些事情發生瞭,BroadcastReceiver註冊的有兩種方式,一種是可以在AndroidManifest.xml中註冊,另一種可以在運行時的代碼中使用Context.registerReceiver()進行註冊。用戶還可以通過Context.sendBroadcast()將他們自己的intent broadcasts廣播給其他的應用程序。
3. Service介紹:
Service是一種程序,它可以運行很長的時間,相當於後臺的一個服務,通過startService(Intent service)可以啟動一個Service,通過Context.bindService()可以綁定一個Service
4. Content Provider介紹:
數據在android當中是私有的,這些數據包括文件數據和數據庫數據以及其他類型的一些數據。兩個程序之間數據的交互是通過Content Provider來實現,一個Content Provider實現瞭一組標準的接口,能夠讓其他應用保存或讀取此Content Provider的各種數據類型。所以一個程序可以通過實現以個Content Provider的抽象接口將自己的數據暴露在外面,實現常見的接口有:
Query(URI,String[],String,String[],String):通過關鍵字查詢;
Insert(Uri,ContentValues):將一組數據插入到指定的地方 ;
Update(Uri,ContentValues,String,String[]):更新數據;
Delete(Uri, String, Stringp[]) :刪除數據;
摘自 虛懷若谷