官术网_书友最值得收藏!

1.3 原理學習:Android系統架構和開發框架

1.3.1 Android系統架構

Android系統架構如圖1.2所示

圖1.2 Android系統架構

Android系統架構和其操作系統架構一樣,都采用了分層架構。Android系統架構共分四層,分別是應用程序層、應用框架層、系統庫及運行時層和Linux內核層。

(1)應用程序層:該層提供核心應用程序包,如首頁、聯系人、電話和瀏覽器等,開發者可以設計和編寫相應的應用程序。

(2)應用框架層:該層是Android應用開發的基礎,包括活動管理器、窗口管理器、內容提供器、視圖系統、通知管理器、安裝包管理器、電話管理器、資源管理器、位置管理器和XMPP服務。

(3)系統庫及運行時層。系統庫中的庫文件主要包括圖層管理、媒體庫、SQLite、OpenGL ES、自由類型、WebKit、SGL、SSL和libc;運行時包括核心庫和Dalvik虛擬機。核心庫不僅兼容大多數Java所需要的功能函數,還包括Android的核心庫,如android.os、android.net、android.media等;Dalvik虛擬機是一種基于寄存器的Java虛擬機,主要完成對生命周期、堆棧、線程、安全和異常的管理,以及垃圾回收等功能。

(4)Linux內核層。Linux內核層提供各種硬件驅動,如顯示驅動、攝像頭驅動、藍牙驅動、鍵盤驅動、Wi-Fi驅動、音頻驅動、Flash驅動、綁定驅動、USB驅動、電源管理等。

1.3.2 Android應用開發框架

Android應用開發包含基本的應用功能開發、數據存儲和網絡訪問三大模塊。

1. 基本的應用功能開發

1)Android應用程序的組成

Android應用程序一般由Activity、Broadcast Receiver、Service、ContentProvider組成。

(1)Activity。Activity是最基本的模塊。Android應用程序往往包含多個Activity實例。一個Activity實例就是手機上的一屏,相當于一個網頁,每個Activity實例運行結束后都有一個返回值。Android應用程序會記錄從首頁到其他界面的跳轉記錄,并將以前的Activity實例壓入系統堆棧。用戶可以通過編程的方式刪除堆棧中的Activity實例。

Activity主要用于關聯界面資源文件(“res/layout”目錄下的XML資源,也可以不包含界面資源),其內部包含控件的顯示設計、界面交互設計、事件的響應設計,以及數據處理設計、導航設計等。

(2)BroadcastReceiver。BroadcastReceiver提供了在Android應用程序進程間進行通信的機制,例如,當來電時,可以通過BroadcastReceiver廣播消息。對用戶而言,BroadcastReceiver是不透明的,用戶無法看到事件,BroadcastReceiver通過NotificationManager來通知用戶事件發生了。BroadcastReceiver既可以在資源AndroidManifest.xml中注冊,也可以在代碼中通過Context.registerReceiver()函數進行注冊,只要注冊了,當事件來臨時,即使應用程序沒有啟動,系統也在需要的時候自動啟動應用程序。另外,應用程序可以很方便地通過Context.sendBroadcast()將自己的事件廣播給其他應用程序。

(3)Service。Service主要用于在后臺處理一些耗時的邏輯,或者執行某些需要長期運行的任務,甚至可以在應用程序退出的情況下,讓Service在后臺繼續保持運行狀態。Service擁有生命周期方法,可以監控服務狀態的變化,以便在合適的階段執行工作。

(4)ContentProvider。ContentProvider提供了在應用程序之間進行數據交換的機制。應用程序可以通過實現一個ContentProvider的抽象接口將自己的數據暴露出去,并隱蔽具體的數據存儲實現。ContentProvider提供了基本的CRUD(Create、Read、Update、Delete)接口,并實現了權限機制,從而可以保護數據交互的安全性。

2)Android應用程序的項目文件

一個標準的Android應用程序的項目文件包含以下幾個部分:

(1)src目錄:該目錄用于保存Java代碼部分(包含Activity)。

(2)R.java文件:這個文件是由Eclipse自動生成與維護的,用戶不需要修改,該文件提供了Android應用程序資源的全局索引。

(3)Android Libraries目錄:該目錄用于保存運行應用程序的Android庫。

(4)assets目錄:該目錄用于保存多媒體等文件。

(5)res目錄:該目錄用于保存資源文件,和VC中的資源目錄類似。該目錄中的drawable保存的是圖片文件,layout保存的是布局文件,values保存的是strings.xml(字符串)、colors.xml(顏色)和arrays.xml(數組)資源。

(6)AndroidManifest.xml:這個文件非常重要,是整個應用程序的配置文件。在這個文件中,需要聲明所有要用到的Activity、Service、Receiver等。

2. 數據存儲

Android的數據存儲方式包括SharedPreferences、文件存儲、SQLite數據庫存儲、內容提供器(ContentProvider)以及網絡存儲,具體如下:

(1)SharedPreferences。SharedPreferences是由Android提供的一種最簡單的數據存儲方式,默認存在應用程序項目文件的“data/<package name>/shared_prefs”中,通過getSharedPreferences函數可獲取SharedPreferences對象并進行讀寫操作。

(2)文件存儲。通過openFileInput、openFileOutput等系統提供的API可以進行數據的讀寫訪問。特別需要注意的是,在Android中,應用程序的數據是私有的,也就是說,其他應用程序無法訪問當前應用程序所產生的文件。

(3)SQLite數據庫存儲。SQLite數據庫存儲是通過繼承SQLiteOpenHelper類并獲取此類的應用程序級別的實例來進行數據庫操作的。SQLiteOpenHelper類中提供了默認的CRUD接口,便于對應用程序進行數據存儲操作。

(4)ContentProvider。ContentProvider是通過調用其他應用程序的數據接口來實現數據存儲的。

(5)網絡存儲。網絡存儲是通過網絡訪問服務接口(如WebService數據訪問接口)來實現數據存儲的。

3. 網絡訪問

網絡訪問主要是對HTTP訪問技術的封裝,并通過java.net.*以及Android.net.*提供的HttpPost、DefaultHttpClient、HttpResponse等類提供的訪問接口來實現Web服務訪問。

主站蜘蛛池模板: 绵竹市| 巧家县| 贺州市| 固阳县| 淮北市| 明光市| 平陆县| 嘉峪关市| 宁蒗| 田林县| 舟山市| 望江县| 读书| 什邡市| 平邑县| 南开区| 浦江县| 郁南县| 壶关县| 上犹县| 册亨县| 闸北区| 惠东县| 天镇县| 孙吴县| 八宿县| 西乌珠穆沁旗| 襄垣县| 江都市| 保靖县| 凤山县| 彭山县| 莫力| 察隅县| 中卫市| 清远市| 龙陵县| 若尔盖县| 吐鲁番市| 玉林市| 蒙自县|