2014年11月24日 星期一

[Android] Android 裡的4大元件簡介

開發Android程式除了需要會寫Java之外,也必須對Android的Application Component有所瞭解,亦即Activities、Intents and Intent Filters、Services和Content Providers,以下對這些元件的用途做個基本的簡介:

1. Activities

一個可與使用者進行互動的畫面在Android裡稱為Activity,換句話說它是一個負責服務使用者的UI執行緒 (Thread),在此UI執行緒下可以再建立許多Non UI子執行緒去處理各種任務,這樣的好處是可以避免UI的響應 (response)延遲過久。由於一個畫面代表一個Activity,所以一個App會有一至多個ActivitiesActivities之間的溝通或是暫停目前執行中的Activity改啟動其它Activities則是得透過Intents來達成。

2. Intents and Intent Filters

Intents總共有三個用途:

(1). 啟動Activity

在Activity裡可以透過呼叫startActivity()或是startActivityForResult()等方法(method)並傳入Intent來啟動其它Activity,Android系統則會根據Intent所提供的資訊來決定要啟動哪個Activity。傳入的Intent又可以分成Explicit Intent或是 Implicit Intent,前者必須詳述想啟動的Activity的類別名稱,後者只需指定一些動做條件不需明確知道該啟動哪個Activity,如果程式內設定的動做條件有許多Activity符合的話,則系統會跳出視窗供使用者選擇要啟動哪一個Activity。


(2). 啟動Service


(3). 傳遞廣播

廣播的概念就像學生時代幹壞(ㄔㄨㄣˇ)事被發現時,訓導主任會用麥克風廣播:XXX請至訓導處一趟」。發出廣播的時候全校的人都會聽到,但只有做賊心虛的XXX會乖乖的到訓導處報到或是選擇翻牆落跑。用Intent傳遞廣播 (Broadcast)的概念就像是這種狀況,寫程式時可以讓Activity發送廣播給其它Activity,也可以註冊一個事件去監聽特定的廣播,雖然Activities之間無法知道對方的資料,不過透過Intent發廣播可以達成將資料傳遞給其它Activity、或是接收來自其它Activity的資料。其實系統一直會有廣播發出 (例如剩餘電量),但就像前面所提,只有XXX會做出反應去訓導處報到,因此在Activity裡註冊一個事件去監聽廣播的同時,也必須用Intent Filters過濾出Activity想接收的特定廣播是什麼,例如等待系統發出剩餘電量的廣播並在接收到訊息後做處理 (像是根據剩餘電量多寡再決定是否通知使用者充電)。

3. Services

Service是沒有UI介面的背景執行程序 (知道想幹壞事該怎麼做了吧),例如背景執行的音樂播放程序或是檔案下載程序,另外也可以透過Service來達成Inter-Process Communication (IPC)。Service可以被Activities和Intents啟動。


4. Content Providers

Content Providers負責管理結構化的資料 ,並提供給應用程式做存取,由於各個應用程式之間無法知道彼此之間的資料,所以透過Content Provider可以達到應用程式之間的資料共享,例如通訊錄、相簿等。

沒有留言:

張貼留言