第4章-Android開發(fā)框架_第1頁
第4章-Android開發(fā)框架_第2頁
第4章-Android開發(fā)框架_第3頁
第4章-Android開發(fā)框架_第4頁
第4章-Android開發(fā)框架_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第四章第四章 Android開發(fā)框架開發(fā)框架本章主要內(nèi)容本章主要內(nèi)容Android系統(tǒng)架構(gòu)Android應用程序組成Activity生命周期Android項目架構(gòu)AndroidManifest.xml文件解析XML簡介Android生命周期Android系統(tǒng)架構(gòu)Android系統(tǒng)架構(gòu) 與其它操作系統(tǒng)一樣,Android的系統(tǒng)架構(gòu)采用了分層結(jié)構(gòu)。Android分為四層,從高到低分別是應用程序?qū)?、應用程序框架層、系統(tǒng)運行庫層(包含系統(tǒng)庫和Android運行庫)和linux核心層。 Android從本質(zhì)上來講是一套軟件堆疊(Software Stack),主要分為三層:即操作系統(tǒng)、中間件和應用程序。

2、其中,Android的中間件可以再細分出兩層,底層是函數(shù)庫(Library)和虛擬機(Virtual Machine; VM),上層為應用程序框架(Application Framework)。上面架構(gòu)圖中藍色部分(包括上兩大層和Android Runtime中的Core Libraries)使用Java語言開發(fā),綠色部分(LIBRAIES)使用C/C+開發(fā),紅色部分(Linux Kernel)使用C開發(fā),黃色部分為Dalvik VM。Android系統(tǒng)架構(gòu)1、應用程序?qū)討贸绦驅(qū)?Applications) Android會同一系列核心應用程序包一起發(fā)布,主要包括撥號程序、email客戶端,

3、SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的這些應用程序都是使用JAVA語言編寫的。2、應用程序框架層應用程序框架層(Application Framework) 對于Android系統(tǒng),開發(fā)人員可以完全訪問核心應用程序所使用的API框架。該應用程序的架構(gòu)設計簡化了組件的重用;任何一個應用程序都可以發(fā)布它的功能塊并且任何其它的應用程序都可以使用其所發(fā)布的功能模塊(需要遵循框架的安全性限制)。同樣,該應用程序重用機制也使用戶可以方便的替換程序組件。Android系統(tǒng)架構(gòu)支撐應用程序正常運行的是一系列的服務, 其中包括:1.Views System:豐富且可擴展的視圖(Views

4、),用于構(gòu)建應用程序,包括列表(lists),網(wǎng)格(grids),文本框(text boxes),按鈕(buttons),甚至是可嵌入的web瀏覽器。2.Content Providers(內(nèi)容提供器):使得應用程序可以訪問由另一個應用程序所維護的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫), 或者共享它們自己的數(shù)據(jù)。3.Resource Manager(資源管理器):提供非代碼資源的訪問,如本地字符串,圖形,和布局文件( layout files )4.Notification Manager(通知管理器):使應用程序可以在系統(tǒng)狀態(tài)欄中顯示提示信息。通知區(qū)域設定在手機的頂部,例如未讀短信郵件、未接電話等通知消息都

5、會在此區(qū)域顯示。5.Activity Manager(Activity管理):用于管理應用程序各Activity的生命周期并提供常用的導航回退功能。Android系統(tǒng)架構(gòu)3、函數(shù)庫層函數(shù)庫層(Libraries) Android 包含了一些基礎的C/C+庫,它們能被Android系統(tǒng)中不同的組件使用。它們通過 Android 應用程序框架為開發(fā)者提供服務。以下是一些核心庫1. System C library:一個從 BSD 繼承來的標準 C 系統(tǒng)函數(shù)庫( libc ), 它是專門為基于embedded linux的設備定制的。2. Media Libraries:基于PacketVideo

6、OpenCORE;該庫支持多種常用的音頻、視頻格式回放和錄制,同時支持靜態(tài)圖像文件。編碼格式包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG等等 。3. Surface Manager:提供對顯示子系統(tǒng)的管理,并且為應用程序提供了2D和3D圖層的無縫融合。Android系統(tǒng)架構(gòu)4. LibWebCore:一個最新的web瀏覽器引擎,支持Android瀏覽器及可嵌入應用程序的web視圖。5. SGL:底層的2D圖形引擎。6. 3D Libraries:基于OpenGL ES 1.0 APIs實現(xiàn);該庫可以使用硬件 3D加速(如果可用)或者使用高度優(yōu)化的3D軟加速。7. Free

7、 Type:位圖(bitmap)和矢量(vector)字體顯示。8. SQLite:SQLite是一套開放源碼的關(guān)系數(shù)據(jù)庫,是一種對于所有應用程序可用并且功能強勁的輕型關(guān)系型數(shù)據(jù)庫引擎。9. SSL:Secure Socket Layer用于保護網(wǎng)頁通訊安全的協(xié)議。Android系統(tǒng)架構(gòu)4、Android運行時環(huán)境(Android Runtime) Android雖然使用Java程序語言來開發(fā)應用程序,但是卻不是使用原有的J2ME版本來執(zhí)行Java程序,而是采用Android自有的Android Runtime來執(zhí)行。Android Runtime由下面兩個核心部分組成。pCore Libra

8、ries即核心庫,該核心庫實現(xiàn)了JAVA編程語言核心庫的大多數(shù)功能。pDalvik Virtual MachineAndroid系統(tǒng)架構(gòu)4、內(nèi)核層(Linux Kernel) Android平臺的系統(tǒng)內(nèi)核是Linux 2.6,其包含的主要功能有安全(Security)、內(nèi)存管理(Memory Management)、進程管理(Process Managemen)、網(wǎng)絡協(xié)議棧(Network Stack)、硬件驅(qū)動(Driver Model)等,Linux內(nèi)核同時也作為硬件和軟件棧之間的抽象層。Android應用程序組成Android應用程序組成 一個常規(guī)的Android程序主要由Activit

9、y、Broadcast Receiver、Service、Content Provider四個部分組成。但是并不是所有的Android應用程序都必須包含這4個部分Android應用程序組成pActivityAndroid中最普通的模塊之一,也是開發(fā)者最常遇到的模塊之一。在Android程序中,一個Activity就相當于手機屏幕的一頁顯示,類似于瀏覽器的一個網(wǎng)頁。通常在Activity中添加一些UI組件,并對這些組件實現(xiàn)相應的事件處理。在一個Android應用程序中,可能涉及多個Activity,并在這幾個Activity中進行跳轉(zhuǎn)。打開一個新的Activity時會將當前的Activity置為

10、暫停狀態(tài)并壓入堆棧,Android默認會把每個應用從開始到當前的每個Activity都保存到堆棧中,也可以通過設定使一些無需保留的Activity不壓入堆棧。Android應用程序組成pBroadcast Receiver可以翻譯為“廣播接收器”,它用于對Android系統(tǒng)廣播的事件進行接收以方便做出所需的處理,例如有電話撥打進來時,由于Phone這個應用程序注冊了與這個事件相關(guān)的Broadcast Receiver,它就將對這個事件進行處理。需要注意的是BroadcastReceiver本身并不會生成UI,即對于用戶這個接收事件是不可見的,BroadcastReceiver通過Notific

11、ationManager來通知用戶。BroadcastReceiver可以在AndroidManifest.xml中注冊,也可以在代碼中通過Context.registerReceiver()進行動態(tài)注冊。一旦某個應用程序注冊了BroadcastReceiver,那么即使程序并沒有啟動,當這個BroadcastReceiver所響應的事件發(fā)生時,系統(tǒng)也會根據(jù)需要啟動該應用程序。Android應用程序組成pService使用過智能手機的讀者可以發(fā)現(xiàn),使用音樂播放器播放音樂時,可以切換至其他的應用程序,音樂會在后臺繼續(xù)播放。這就是Service在后臺對音樂播放進行控制,當點擊了播放器上的停止按鈕時

12、,播放音樂的Service也就停止了。Service沒有用戶界面,是一種可以運行很長時間的程序。可以簡單地將Service理解為沒有用戶界面的Activity。Service可以通過兩種方式啟動,即startService(Intent service)和Context.bindService(),在第5章中會對Service進行詳細的介紹。Android應用程序組成pContent Provider在Android中,無論是文件數(shù)據(jù)還是數(shù)據(jù)庫數(shù)據(jù),這些數(shù)據(jù)都是私有的,默認不對其他應用程序開放的。那么如何在兩個應用程序之間交換數(shù)據(jù)呢?這時就需要Content Provider??梢詫onte

13、nt Provider理解為數(shù)據(jù)操作類。在該類中,Android實現(xiàn)了一組標準的方法接口,通過這些接口,應用程序就可以讀取或者保存這個類提供的各種類型的數(shù)據(jù)了。常見常見的的接口接口 query(Uri,String,String,String,String),該方法通過關(guān)鍵字查詢數(shù)據(jù) ; insert(Uri,ContentValues),該方法的作用是將一條數(shù)據(jù)插入到指定位置; update(Uri,ContentValues,String,String),更新數(shù)據(jù); delete(Uri,String,String),刪除數(shù)據(jù)。Activity生命周期在應用程序中每一個Activity都擁

14、有自己的生命周期,這個生命周期由系統(tǒng)來實現(xiàn)統(tǒng)一的管理。一個Activity有三個基本的狀態(tài): 當其在前臺運行時(即在Activity當前任務的堆棧頂),即為活動狀態(tài)活動狀態(tài)(運行狀態(tài))。這時Activity會響應用戶的操作。 當Activity失去焦點但是對用戶仍然可見時為paused暫停狀態(tài)暫停狀態(tài)。此時,其他的Activity存在于自己之上,這種情況可能是透明或者被非全部覆蓋(如非全屏的對話框)。所以其中一些處于暫停狀態(tài)的Activity也可以被顯示。一個暫停的Activity仍然是處于活動狀態(tài)的(它維護著所有的狀態(tài)保存信息,并且依然附著在窗口管理器)。 如果一個Activity完全被另一

15、個Activity所掩蓋,那它的狀態(tài)會變?yōu)閟topped。此時仍然保存著狀態(tài)信息。 當其他應用程序需要使用更多的內(nèi)存時,系統(tǒng)有可能會殺死處于paused狀態(tài)或stopped狀態(tài)的Activity(系統(tǒng)會在殺死Activity之前對狀態(tài)進行保存)。當其再次需要顯示時,系統(tǒng)會重新運行該Activity并且加載所保存的狀態(tài)信息。Activity生命周期如圖所示是描述Activity生命周期的框圖Activity生命周期Activity生命周期,包括了三個主要的循環(huán)結(jié)構(gòu),由大至小分別如下,其中每一個較小的循環(huán)都是較大循環(huán)的子集。完整的完整的Activity生命周期。生命周期。這個周期循環(huán)從該Activ

16、ity的onCreate()方法第一次被調(diào)用開始,直到onDestroy()方法被調(diào)用結(jié)束。在onCreate()方法中,Activity會對所有的全局狀態(tài)進行初始化,并在onDestroy()方法中釋放所有資源。Activity的可見生命周期。的可見生命周期。這個周期從onStart()方法被調(diào)用時開始,直到onStop()方法被調(diào)用時結(jié)束,在這個周期中Activity對于用戶是可見的,但是也有可能不處于Activity棧的最上方即不是可交互的。在這個周期中可以獲取資源并對UI進行更新。Activity前臺生命周期。前臺生命周期。在這個周期中Activity始終處于棧的頂端并且可以與用戶交互

17、。周期從onResume()方法被調(diào)用時開始直到onPause()方法被調(diào)用時結(jié)束,對于一個Activity來說這兩個方法是十分頻繁的會被調(diào)用到的,例如當Android進入休眠狀態(tài)或者該Activity調(diào)用了新的Activity。Android項目架構(gòu)1.src:存放java源代碼。2.gen:編譯器自動生成的java代碼,這個目錄下的文件是由系統(tǒng)維護的。3.assets:這個目錄下的文件會被打包到Android應用程序安裝包(.apk)中。4.res: 資源文件目錄,添加到這個目錄下的文件都會在gen下的R.java文件中與一個整形常量相關(guān)聯(lián);如果在res下存放的資源在應用中沒有被使用,在打

18、包的時候就不會將這部分資源打包,這樣可以減小安裝文件的大小。5.drawable-hdpi:存放適用于高分辨率設備的圖片文件。Android工程目錄Android項目架構(gòu)7.drawable-ldpi: 存放適用于低分辨率設備的圖片文件。8.drawable-mdpi:存放適用于中等分辨率設備的圖片文件。9.layout:這個目錄下的文件是用于自定義界面的。10. values:這個目錄下用于存放一些常量,例如最常見的string.xml文件是用于存放程序中的字符串,只要在這些文件中增加了任何的屬性配置,都會反映在gen下的R.xml文件中。11. AndroidManifest.xml :應

19、用程序功能清單文件,用于向系統(tǒng)描述該應用程序的一些功能,例如該應用程序包含了多少個Activity、Service,需要使用哪些權(quán)限等等12. perties: 這個文件不會直接使用,由編譯工具自動生成。13. proguard.cfg:該文件也不重要,適用于對代碼進行加密,防止被反編譯。AndroidManifest.xml文件解析AndroidManifest.xml是每個Android項目中必須的文件。它位于項目的根目錄,描述了package中的全局數(shù)據(jù),包括package中的組件(如Activities,Services等等)以及這些組件各自的實現(xiàn)類,還有各種能被處理的數(shù)據(jù)即其他屬性。屬性屬性intent-filters這些filters隱式地描述了其對應的Activity啟動的條件。當Activity要執(zhí)行一個操作時,例如打開網(wǎng)頁或聯(lián)系簿時,它將創(chuàng)建一個intent對象。這個intent對象包含了一些描述想做什么、想處理什么數(shù)據(jù)、數(shù)據(jù)的類型等等信息。Android通過比較這些intent對象和每個Activity聲明的intent-filter中的信息,從中找到最合適的Activity來處理調(diào)用者所指定的操作。除了聲明程序中的Activities,Co

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論