




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第四章第四章 Android開發框架開發框架本章主要內容本章主要內容Android系統架構Android應用程序組成Activity生命周期Android項目架構AndroidManifest.xml文件解析XML簡介Android生命周期Android系統架構Android系統架構 與其它操作系統一樣,Android的系統架構采用了分層結構。Android分為四層,從高到低分別是應用程序層、應用程序框架層、系統運行庫層(包含系統庫和Android運行庫)和linux核心層。 Android從本質上來講是一套軟件堆疊(Software Stack),主要分為三層:即操作系統、中間件和應用程序。
2、其中,Android的中間件可以再細分出兩層,底層是函數庫(Library)和虛擬機(Virtual Machine; VM),上層為應用程序框架(Application Framework)。上面架構圖中藍色部分(包括上兩大層和Android Runtime中的Core Libraries)使用Java語言開發,綠色部分(LIBRAIES)使用C/C+開發,紅色部分(Linux Kernel)使用C開發,黃色部分為Dalvik VM。Android系統架構1、應用程序層應用程序層(Applications) Android會同一系列核心應用程序包一起發布,主要包括撥號程序、email客戶端,
3、SMS短消息程序,日歷,地圖,瀏覽器,聯系人管理程序等。所有的這些應用程序都是使用JAVA語言編寫的。2、應用程序框架層應用程序框架層(Application Framework) 對于Android系統,開發人員可以完全訪問核心應用程序所使用的API框架。該應用程序的架構設計簡化了組件的重用;任何一個應用程序都可以發布它的功能塊并且任何其它的應用程序都可以使用其所發布的功能模塊(需要遵循框架的安全性限制)。同樣,該應用程序重用機制也使用戶可以方便的替換程序組件。Android系統架構支撐應用程序正常運行的是一系列的服務, 其中包括:1.Views System:豐富且可擴展的視圖(Views
4、),用于構建應用程序,包括列表(lists),網格(grids),文本框(text boxes),按鈕(buttons),甚至是可嵌入的web瀏覽器。2.Content Providers(內容提供器):使得應用程序可以訪問由另一個應用程序所維護的數據(如聯系人數據庫), 或者共享它們自己的數據。3.Resource Manager(資源管理器):提供非代碼資源的訪問,如本地字符串,圖形,和布局文件( layout files )4.Notification Manager(通知管理器):使應用程序可以在系統狀態欄中顯示提示信息。通知區域設定在手機的頂部,例如未讀短信郵件、未接電話等通知消息都
5、會在此區域顯示。5.Activity Manager(Activity管理):用于管理應用程序各Activity的生命周期并提供常用的導航回退功能。Android系統架構3、函數庫層函數庫層(Libraries) Android 包含了一些基礎的C/C+庫,它們能被Android系統中不同的組件使用。它們通過 Android 應用程序框架為開發者提供服務。以下是一些核心庫1. System C library:一個從 BSD 繼承來的標準 C 系統函數庫( libc ), 它是專門為基于embedded linux的設備定制的。2. Media Libraries:基于PacketVideo
6、OpenCORE;該庫支持多種常用的音頻、視頻格式回放和錄制,同時支持靜態圖像文件。編碼格式包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG等等 。3. Surface Manager:提供對顯示子系統的管理,并且為應用程序提供了2D和3D圖層的無縫融合。Android系統架構4. LibWebCore:一個最新的web瀏覽器引擎,支持Android瀏覽器及可嵌入應用程序的web視圖。5. SGL:底層的2D圖形引擎。6. 3D Libraries:基于OpenGL ES 1.0 APIs實現;該庫可以使用硬件 3D加速(如果可用)或者使用高度優化的3D軟加速。7. Free
7、 Type:位圖(bitmap)和矢量(vector)字體顯示。8. SQLite:SQLite是一套開放源碼的關系數據庫,是一種對于所有應用程序可用并且功能強勁的輕型關系型數據庫引擎。9. SSL:Secure Socket Layer用于保護網頁通訊安全的協議。Android系統架構4、Android運行時環境(Android Runtime) Android雖然使用Java程序語言來開發應用程序,但是卻不是使用原有的J2ME版本來執行Java程序,而是采用Android自有的Android Runtime來執行。Android Runtime由下面兩個核心部分組成。pCore Libra
8、ries即核心庫,該核心庫實現了JAVA編程語言核心庫的大多數功能。pDalvik Virtual MachineAndroid系統架構4、內核層(Linux Kernel) Android平臺的系統內核是Linux 2.6,其包含的主要功能有安全(Security)、內存管理(Memory Management)、進程管理(Process Managemen)、網絡協議棧(Network Stack)、硬件驅動(Driver Model)等,Linux內核同時也作為硬件和軟件棧之間的抽象層。Android應用程序組成Android應用程序組成 一個常規的Android程序主要由Activit
9、y、Broadcast Receiver、Service、Content Provider四個部分組成。但是并不是所有的Android應用程序都必須包含這4個部分Android應用程序組成pActivityAndroid中最普通的模塊之一,也是開發者最常遇到的模塊之一。在Android程序中,一個Activity就相當于手機屏幕的一頁顯示,類似于瀏覽器的一個網頁。通常在Activity中添加一些UI組件,并對這些組件實現相應的事件處理。在一個Android應用程序中,可能涉及多個Activity,并在這幾個Activity中進行跳轉。打開一個新的Activity時會將當前的Activity置為
10、暫停狀態并壓入堆棧,Android默認會把每個應用從開始到當前的每個Activity都保存到堆棧中,也可以通過設定使一些無需保留的Activity不壓入堆棧。Android應用程序組成pBroadcast Receiver可以翻譯為“廣播接收器”,它用于對Android系統廣播的事件進行接收以方便做出所需的處理,例如有電話撥打進來時,由于Phone這個應用程序注冊了與這個事件相關的Broadcast Receiver,它就將對這個事件進行處理。需要注意的是BroadcastReceiver本身并不會生成UI,即對于用戶這個接收事件是不可見的,BroadcastReceiver通過Notific
11、ationManager來通知用戶。BroadcastReceiver可以在AndroidManifest.xml中注冊,也可以在代碼中通過Context.registerReceiver()進行動態注冊。一旦某個應用程序注冊了BroadcastReceiver,那么即使程序并沒有啟動,當這個BroadcastReceiver所響應的事件發生時,系統也會根據需要啟動該應用程序。Android應用程序組成pService使用過智能手機的讀者可以發現,使用音樂播放器播放音樂時,可以切換至其他的應用程序,音樂會在后臺繼續播放。這就是Service在后臺對音樂播放進行控制,當點擊了播放器上的停止按鈕時
12、,播放音樂的Service也就停止了。Service沒有用戶界面,是一種可以運行很長時間的程序??梢院唵蔚貙ervice理解為沒有用戶界面的Activity。Service可以通過兩種方式啟動,即startService(Intent service)和Context.bindService(),在第5章中會對Service進行詳細的介紹。Android應用程序組成pContent Provider在Android中,無論是文件數據還是數據庫數據,這些數據都是私有的,默認不對其他應用程序開放的。那么如何在兩個應用程序之間交換數據呢?這時就需要Content Provider。可以將Conte
13、nt Provider理解為數據操作類。在該類中,Android實現了一組標準的方法接口,通過這些接口,應用程序就可以讀取或者保存這個類提供的各種類型的數據了。常見常見的的接口接口 query(Uri,String,String,String,String),該方法通過關鍵字查詢數據 ; insert(Uri,ContentValues),該方法的作用是將一條數據插入到指定位置; update(Uri,ContentValues,String,String),更新數據; delete(Uri,String,String),刪除數據。Activity生命周期在應用程序中每一個Activity都擁
14、有自己的生命周期,這個生命周期由系統來實現統一的管理。一個Activity有三個基本的狀態: 當其在前臺運行時(即在Activity當前任務的堆棧頂),即為活動狀態活動狀態(運行狀態)。這時Activity會響應用戶的操作。 當Activity失去焦點但是對用戶仍然可見時為paused暫停狀態暫停狀態。此時,其他的Activity存在于自己之上,這種情況可能是透明或者被非全部覆蓋(如非全屏的對話框)。所以其中一些處于暫停狀態的Activity也可以被顯示。一個暫停的Activity仍然是處于活動狀態的(它維護著所有的狀態保存信息,并且依然附著在窗口管理器)。 如果一個Activity完全被另一
15、個Activity所掩蓋,那它的狀態會變為stopped。此時仍然保存著狀態信息。 當其他應用程序需要使用更多的內存時,系統有可能會殺死處于paused狀態或stopped狀態的Activity(系統會在殺死Activity之前對狀態進行保存)。當其再次需要顯示時,系統會重新運行該Activity并且加載所保存的狀態信息。Activity生命周期如圖所示是描述Activity生命周期的框圖Activity生命周期Activity生命周期,包括了三個主要的循環結構,由大至小分別如下,其中每一個較小的循環都是較大循環的子集。完整的完整的Activity生命周期。生命周期。這個周期循環從該Activ
16、ity的onCreate()方法第一次被調用開始,直到onDestroy()方法被調用結束。在onCreate()方法中,Activity會對所有的全局狀態進行初始化,并在onDestroy()方法中釋放所有資源。Activity的可見生命周期。的可見生命周期。這個周期從onStart()方法被調用時開始,直到onStop()方法被調用時結束,在這個周期中Activity對于用戶是可見的,但是也有可能不處于Activity棧的最上方即不是可交互的。在這個周期中可以獲取資源并對UI進行更新。Activity前臺生命周期。前臺生命周期。在這個周期中Activity始終處于棧的頂端并且可以與用戶交互
17、。周期從onResume()方法被調用時開始直到onPause()方法被調用時結束,對于一個Activity來說這兩個方法是十分頻繁的會被調用到的,例如當Android進入休眠狀態或者該Activity調用了新的Activity。Android項目架構1.src:存放java源代碼。2.gen:編譯器自動生成的java代碼,這個目錄下的文件是由系統維護的。3.assets:這個目錄下的文件會被打包到Android應用程序安裝包(.apk)中。4.res: 資源文件目錄,添加到這個目錄下的文件都會在gen下的R.java文件中與一個整形常量相關聯;如果在res下存放的資源在應用中沒有被使用,在打
18、包的時候就不會將這部分資源打包,這樣可以減小安裝文件的大小。5.drawable-hdpi:存放適用于高分辨率設備的圖片文件。Android工程目錄Android項目架構7.drawable-ldpi: 存放適用于低分辨率設備的圖片文件。8.drawable-mdpi:存放適用于中等分辨率設備的圖片文件。9.layout:這個目錄下的文件是用于自定義界面的。10. values:這個目錄下用于存放一些常量,例如最常見的string.xml文件是用于存放程序中的字符串,只要在這些文件中增加了任何的屬性配置,都會反映在gen下的R.xml文件中。11. AndroidManifest.xml :應
19、用程序功能清單文件,用于向系統描述該應用程序的一些功能,例如該應用程序包含了多少個Activity、Service,需要使用哪些權限等等12. perties: 這個文件不會直接使用,由編譯工具自動生成。13. proguard.cfg:該文件也不重要,適用于對代碼進行加密,防止被反編譯。AndroidManifest.xml文件解析AndroidManifest.xml是每個Android項目中必須的文件。它位于項目的根目錄,描述了package中的全局數據,包括package中的組件(如Activities,Services等等)以及這些組件各自的實現類,還有各種能被處理的數據即其他屬性。屬性屬性intent-filters這些filters隱式地描述了其對應的Activity啟動的條件。當Activity要執行一個操作時,例如打開網頁或聯系簿時,它將創建一個intent對象。這個intent對象包含了一些描述想做什么、想處理什么數據、數據的類型等等信息。Android通過比較這些intent對象和每個Activity聲明的intent-filter中的信息,從中找到最合適的Activity來處理調用者所指定的操作。除了聲明程序中的Activities,Co
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 七年級語文上冊 第六單元 12童區寄傳教學設計 北師大版
- 人教版地理八上第一章第2節《人口》教學設計
- 人教版三年級音樂下冊(簡譜)《可愛的家》教學設計
- 九年級數學下冊 第二章 二次函數2 二次函數的圖象與性質第2課時 二次函數y=ax2+c的圖象與性質教學設計 (新版)北師大版
- 九年級物理下冊 第十六章 電磁轉換 五 電磁感應 發電機教學設計 (新版)蘇科版
- 人教A版 (2019)選擇性必修 第一冊1.2 空間向量基本定理教案設計
- 三年級英語上冊 Unit 6 Happy birthday Part A 第三課時教學設計 人教PEP
- 九年級化學上冊 第六單元 碳和碳的氧化物 課題1 金剛石、石墨和C60教學設計(新版)新人教版
- 人教版七年級下冊歷史(2016新編版)第2課《從“貞觀之治”到“開元盛世”》教學設計
- 六年級下冊有趣的平衡教案及反思
- 熱力管網安全風險評估-全面剖析
- 人道主義補償協議書
- 2025年北京市順義區高考英語一模試卷
- 2025年03月國家藥品監督管理局醫療器械技術審評中心合同制人員公開招聘2人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 2025-2030中國實驗室FTIR光譜儀行業市場發展趨勢與前景展望戰略研究報告
- 福建省漳州市醫院招聘工作人員筆試真題2024
- 高中地理氣候的分布規律試題及答案
- 《人工智能安全導論》 課件 第四章 后門攻擊與防御
- 軍隊保密知識
- 麻醉睡眠治療科普
- 民宿合作協議
評論
0/150
提交評論