一般的android應用程式由4部分組成分別是:
Activity
Broadcast Intent Receiver
Service
Content Provider
並不是說所有的應用程式都是由這四個部分組成,有的簡單的應用只需要Activity就可以了,有的只需要Broadcast Intent Receiver就可以了。
在android項目裡邊有個AndroidManifest.xml檔案,這個檔案非常重重要,就和Asp.net中的web.config檔案一樣,應用中要用到的組件都要首先在這個檔案中
進行描述聲明後才可以正常使用,否則程式中用到了上述的組件了,也不會起作用。
一、Activity 組件
Activity是開發android應用的過程中使用的最頻繁的組件,它是android的最基本的組件之一。在android程式中Activity代表了手機的一個螢幕,好比Asp.net應用中的一個網頁,一個android應用相當於一個web網站。在Activity中我們可以添加View,並且對View做一些操作,View可以理解為一個UI容器,在這個容器中可以添加很多UI 元素,比如:Button,TextView,EditView,List等,這些豐富的UI元素組成了和使用者互動的時的豐富的使用者介面,Activity控制著View中各個元素的邏輯處理和導航,比如Activity1跳轉到Activity2,當然也可以在Activity2關閉的時候返回一個值給Activity1這個和Asp.net中彈出一個對話方塊,當關閉對話方塊時返回一個值給原頁面是一樣的,這樣在開發中解決很多問題是非常方便的。
Android的導航是由一個stack控制,當開啟一個新的螢幕時原來的螢幕會被置為暫停狀態,並且壓入曆史堆棧,使用者可以通過返回操作來彈出棧頂的螢幕並設定為當前操作的螢幕介面。android會把每個應用從開始到當前的每一個螢幕的頁面都壓入到堆棧中,在開發過程中可以有選擇的移除一些堆棧中不會用到的介面。Activity是由android系統進行維護的,它有自己的生命週期。
二、Broadcast Intent Receiver組件
可以使用BroadcastReceiver來讓應用對一個外部的事件作出響應,因此利用這個組件可以做一些很有意思的事情,我之前寫的一篇Android中發送和接收簡訊就是用BroadcastReceiver組件來實現的。當電話和簡訊這個外來事件發生時就可以利用BroadcastReceiver組件來進行處理。BroadcastReceiver不能直接產生與使用者互動的介面,因為介面是由Activity負責的,換句話說對使用者來說是不透明的,使用者看不到它,這個和Windows Service 類似,但是BroadccastReceiver可以通過NotificationManager來通知使用者發生了什麼事情,也可以使用Toast來通知使用者。要使用BroadcastReceiver組件,首先要在AndroidManifest.xml中進行註冊或者在代碼中使用Context.registerReceiver()進行註冊,只要註冊了,當事件發生了,即使應用沒有啟動,android也會自動啟動應用,來響應發生的事件。
三、Service組件
Service是一種程式,它可以運行很長時間,但它和BroadcastReceiver組件一樣也沒有介面,這些服務可以提供系統的某些能力,來供調用,它更像是一組API。例如播放音樂的Sevice,它可以控制音樂的播放,停止。通過startService(Intent service)可以啟動一個service,可以通過Context.BindService()綁定一個Service。
四、Content Provider組件
資料在android中是私人的不能進行共用,這些資料包括檔案和資料庫,但是如果一個應用要使用另一個應用的資料在怎麼做呢?那麼這個時候Content Provider就派上用場了,一個Content Provider定義了一組標準的方法的介面,能使其它應用儲存和讀取此Content Privider的各種資料,那麼怎麼來實現呢?那就是通過去實現Contnent Privider的介面就可以了,Content Privider已經實現了資料的封裝和處理,外界是看不到資料的具體儲存細節,只需要通過這些標準的介面打交道就可以了,可以讀取資料,刪除資料,插入資料等等操作。例如android的基本應用Contects就就通過這種方式共用通訊錄資料的,其它應用可以通過Content Provider組件操作通訊錄中的資料。
總結,android應用的開發過程中主要使用的是以上的四個組建,靈活的使用這些組建可以滿足大部分應用,其中Activity的使用是最頻繁的,許多應用基本上都是有若干的Activity的相互互動構成的。