Android應用程序由松散耦合的組件組成,並使用應用程序Manifest綁定到一起;應用程序Manifest描述了每一組件和它們之間的交互方式,還用於指定應用程序元數據、其硬件和平台要求、外部庫以及必需的權限。
一、應用程序的基本結構模塊
· Activity:應用程序的表示層。每個UI都是通過Activity類的一個或多個擴展實現的。Activity使用Fragment和視圖來布局和顯示信息,以及響應用戶動作。
· Service:應用程序中不可見的工作者。運行時沒有UI,可以更新數據源和Activity、觸發通知和廣播Intent。可以用來執行一個運行時間長的任務,或者不需要和用戶交互的任務。
· Content Provider:可共享的持久數據存儲器(內容提供者)。用來管理和持久化應用程序數據,通常會與SQL數據庫交互。可以通過配置自己的Content Provider來允許其他應用程序訪問,也可以訪問其他應用。
· Intent:消息傳遞框架。Android中大量使用了Intent、Service或者Broadcast Receiver廣播消息,以及請求對特定的一條數據執行操作。
· Broadcast Receiver: Intent偵聽器(廣播接收者)。可以監聽到那些匹配指定的過濾標准的Intent廣播。它會自動地啟動應用程序來響應某個接收到Intent。
· Widget:可視化應用程序組件。它是Broadcast Receiver的特殊變體,可用於創建動態的交互式應用程序組件,用戶可以把這些組件添加到他們的主屏幕上。
· Notification:它允許向用戶發送信號,但卻不會過分吸引他們的注意力或者打斷他們當前的Activity。它們是應用程序不可見或者不活動時吸引用戶注意的首選方法。
二、Manifest文件簡介
每一個Android項目都包含一個Manifest文件——Android Manifest.xml,它存儲在項目層次中的最底層。Manifest可以定義用用程序及其組件和需求的結構和元數據。
Manifest包含了組成應用程序的每一個Activity、Service、Content Provider和Broadcast Receiver的節點,並使用Intent Filter和權限來確定這些組件和其他應用程序是如何交互的。此文件還可以指定應用程序的元數據(圖標、版本號、主題等等) 以及額外的頂層節點,這些節點可以指定必需的安全權限和單元測試,以及定義硬件、屏幕和平台支持要求。
Manifest文件有一個根manifest標簽構成,該標簽帶有一個被設為項目包的package屬性。它通常包含一個xmls:android屬性來提供文件內使用的某些系統屬性。
使用versionCode屬性可講當前的應用版本定義為一個整數,每次版本更新,這個數字都會增加。使用versionName可以定義一個顯示給用戶的公共版本號。
installLocation屬性,是制定是否允許將程序安裝到SD卡上,其值有preferExternal(首選外部存儲器)和auto(系統決定)。不指定時,默認按到內部存儲器中。由於取出或拒絕外部存儲器存在的問題,以下程序不適合安裝到外部存儲器及其后果:
· 具有Widget/Live Wallpaper和Live Folder的應用程序: Widget/Live Wallpaper和Live Folder將從主屏幕上移除,而且重啟系統后可能不在可用。
· 提供不中斷服務的應用程序:程序和它運行的服務將被停止,並且不會自動重啟。
· 輸入法引擎:安裝到外部存儲器的任何IME都會被禁用。在外部存儲器再次可用后,用戶必須重新選擇IME。
· 設備管理器:DeviceAdminReceiver及其管理能力將被禁用。
本篇博文先大體介紹應用程序的組成部分和Manifest文件,下一篇博文將對Manifest展開詳述。
