Activities(活動) 應用程式的顯示層。每一個畫面對應於你的應用程式,將會是Activity類的擴充。Activity使用Views去構建UI來顯示資訊和響應使用者的行為。就案頭開發而言,一個Activity相當於一張Form。 一個Activity通常展現為一個可視化的使用者介面。例如,一個Activity可能展現為一個使用者可以選擇的功能表項目列表或者展現一些圖片以及圖片的標題。一個Message Service應用程式可能包含一個顯示連絡人清單的Activity,一個編寫資訊的Activity,以及其它一些查看資訊和修改應用程式設定的Activity。雖然這些Activity一起工作,共同組成了一個應用程式,但每一個Activity都是相對獨立的。每一個Activity都是Activity(android.app.Activity)的子類。 一個應用程式可能只包含一個Activity,或者像上面提到的Message Service程式一樣有多個Activity。一個應用程式套件組合含幾個Activity以及各個Activity完成什麼樣的功能完全取決於應用程式以及它的設計。通常每個應用程式都包含一個在應用程式啟動後第一個展現給使用者的 Activity。在當前展現給使用者的Activity中啟動一個新的Activity,可以實現從一個Activity轉換到另外一個 Activity。 展示Activity視窗的可視化內容地區是一些具有層次關係(很像資料結構中的樹)的視圖,而視圖則是由類View的子類表示的。每個視圖控制視窗中的一個矩形地區。父視圖包含一些子視圖並管理子視圖的布局。位於分葉節點的視圖直接控制並響應使用者的動作。因此視圖就是Activity與使用者互動的介面。例如,一個顯示圖片的視圖,當使用者單擊的時候它可能會啟動一個動作。Android有許多開發人員可以直接使用的視圖,包括按鈕,文本域,捲軸,菜單,複選框等。 通過調用Activity.setContentView()方法來設定展現Activity的視窗的視圖。內容視圖則是視圖階層中的根節點視圖。 Services(服務) Android應用程式中不可見的“工人”。 Service組件運行時不可見,但它負責更新的資料來源和可見的Activity,以及觸發通知。它們常用來執行一些需要持續啟動並執行處理,當你的 Activity已經不處於啟用狀態或不可見。 Service沒有使用者介面,但它會在後台一直運行。例如,Service可能在使用者處理其它事情的時候播放背景音樂,或者從網路上擷取資料,或者執行一些運算,並把運算結構提供給Activity展示給使用者。每個Service都擴充自類Serivce。 多媒體播放器播放音樂是應用Service的一個非常好的例子。多媒體播放器程式可能含有一個或多個Activity,使用者通過這些 Activity選擇並播放音樂。然而,音樂回放並不需要一個Activity來處理,因為使用者可能會希望音樂一直播放下去,即使退出了播放器去執行其它程式。為了讓音樂一直播放,多媒體播放器Activity可能會啟動一個Service在背景播放音樂。Android系統會使音樂回放Service一直運行,即使在啟動這個Service的Activity退出之後。 與activity以及其它組件一樣,Service同樣運行在應用程式進程的主線程中。所以它們不能阻塞其它組件或使用者介面,通常需要為這些Service派生一個線程執行耗時的任務。 Content(內容) 提供共用的資料存放區。Content Provider(內容提供器)用來管理和共用應用程式的資料庫。在應用程式間,Content Provider是共用資料的首選方式。這意味著,你可以配置自己的Content Provider去存取其他的應用程式或者通過其他應用程式暴露的Content Provider去存取它們的資料。Android裝置本身包含了幾個Content Provider來訪問像連絡人資訊等有用的資料庫。 應用程式可以通過Content Provider訪問其它應用程式的一些私人資料,這是Android提供的一種標準的共用資料的機制。共用的資料可以是儲存在檔案系統中、SQLite 資料庫中或其它的一些媒體中。Content Provider擴充自ContentProvider類,通過實現此類的一組標準的介面可以使其它應用程式存取由它控制的資料。然而應用程式並不會直接調用ContentProvider中的方法,而是通過類ContentResolver。ContentResolver能夠與任何一個 ContentProvider通訊,它與ContentProvider合作管理進程間的通訊。 任何時候當Android系統收到一個需要某個組件進行處理的請求的時候,Android會確保處理此請求的組件的宿主進程是否已經在運行,如果沒有,則立即啟動這個進程,當請求的組件的宿主進程已經在運行,它會繼續查看請求的組件是否可以使用,如果不能立即使用,它會建立一個請求的組件的執行個體來響應請求 Intents(意圖) 簡單的訊息傳遞架構。使用Intent,你可以在整個系統內廣播訊息或者給特定的Activity或者服務來執行你的行為意圖。系統會決定那個(些)目標來執行適當的行為。 Broadcast Receivers(廣播接收器) Intent廣播的“消費者”。通過建立和註冊一個Broadcast Receiver,應用程式可以監聽符合特定條件的廣播的Intent。Broadcast Receiver 會自動的啟動你的Android應用程式去響應新來的Intent。Broadcast Receiver是事件驅動程式的理想手段。 一個應用程式可以包含任意數量的Broadcase Reveiver來響應它認為很重要的通知。所有的Broadcast Receiver都擴充自類BroadcastReceiver。Broadcast Receiver不包含任何使用者介面。然而它們可以啟動一個Activity以響應接受到的資訊,或者通過NotificationManager通知使用者。可以通過多種方式使使用者知道有新的通知產生:閃動背景燈、震動裝置、發出聲音等等。通常程式會在狀態列上放置一個持久的表徵圖,使用者可以開啟這個表徵圖並讀取通知資訊。 Notifications(通知) 使用者通知的架構。Notification用來在不需要焦點或不中斷它們當前Activity的情況下提示使用者。它們是Service或 Broadcast Receiver獲得使用者注意的首選方式。例如,當裝置收到文本資訊或外部來電時,它通過閃光,發聲,顯示表徵圖或顯示對話方塊資訊來提醒你。