注:以下內容轉自網絡
在一個Android 應用中有如下的四種組件:
* Activity 活動組件
* Intent Receiver 接受處理組件
* Service 服務組件
* Content Provider 內容提供組件
一個Android 應用并不需要同時具有這四個組件,應用可以組合這些組件。
在應用中一旦決定使用了哪些組件,就需要在AndroidManifest.xml文件中列舉出來。
Activity
Activities是最普遍的組件,在應用中通常用于顯示一個屏幕(頁面)的內容,僅僅一個屏幕(頁面)的內容。開發人員需要從Activity基 類繼承下來,管理UI顯示和UI的反饋事件。大多數應用程序都會有多個屏幕(頁面)的內容,如一個文本消息的應用程序,第一個頁面要顯示聯系人列表,第二 個頁面要寫東西給選定的聯系人,其他頁面顯示舊的文本內容或者其他等等。每一個頁面都被當做一個Activity(活動組件),移動到其他頁面意味著開始 了一個新的Activity(活動組件)。在某些場景下,一個Activity可以返回值給前一個Activity,如一個頁面選擇了一張圖片,可以返回 這張圖片給調用者(Activit)。
打開新的頁面時,前一個頁面將會暫停,放置到一個歷史堆棧中,用戶可以使用后退鍵瀏覽前面的頁面,頁面也可以從堆棧中刪除。Android會為每一個從主頁面home screen(idle界面?)啟動的應用維護一個歷史堆棧列表。
Intent and Intent Filters
Android使用一個叫Intent的類從一個頁面移動到另外一個頁面。一個Intent描述了應用將要做的事情,就是一種動作行為。最重要的有兩點: 動作的類型和動作所捎帶的參數(數據),典型的動作類型為MAIN(activity的正門),VIEW, PICK, EDIT等等。參數數據以URI形式來表示。例如,為了查看一個人的聯系信息,需要創建一個Intent,動作類型為VIEW,人名為參數數據(需要格式 化為URI)。
一個Activity為了表明能夠處理某些Intent,Android設計了一個相關的類IntentFilter,Activity在 IntentFilter中決定它能夠處理的Intent動作類型,IntentFilter需要在AndroidManifest.xml文件中進行聲 明。
從一個頁面到另外一個頁面跳轉的依據在于發出的Intent,為了向前瀏覽,Activity調用startActivity(myIntent). Android系統在所有安裝的應用程序中查找intent filters,找出最能夠匹配myIntent的Activity。新的activity將被啟動,intent被傳入。有如下兩個關鍵點:
* Activities 能夠重新被使用
* Activities 在任何時候都可以被替換,只要一個Activity設置了相同的IntentFilter
Intent Receiver
在應用程序中,針對外部事件需要執行一些動作來反饋,可以使用IntentReceiver類。例如:來了一個電話,或者數據通道可用,或者晚上到了。 Intent Receiver沒有UI的顯示,盡管可以通過NotificationManager 通知用戶某些有趣的事情發生了。Intent Receivers也需要在AndroidManifest.xml中進行聲明,當然也可以在程序中調用 Context.registerReceiver()接口動態聲明。同時在應用程序沒有跑起來的時候也能夠調用Intent Receivers,當一個Intent Receivers被觸發時,Android系統將會啟動這個應用程序。應用程序也能夠通過Context.broadcastIntent()廣播他們 的Intent。
Service
一個Service是沒有UI,一直運行在后臺的代碼組件。一個好的例子:播放器從一個播放列表中播放歌曲。在一個播放器應用中,大概會有一個或多個 Activity組件允許用戶選擇歌曲和播放它們,歌曲播放代碼不應該放在Activity組件中,因為我們希望一直能夠聽歌,甚至切換到了其他頁面。所 以,播放器頁面應該啟動一個服務組件(Context.startService())來播放歌曲。Android系統將會保持service運行直到它 結束(可以參考“Android 應用的生命周期”一文)??梢允褂肅ontext.bindService()接口連接上一個服務(如果這時候服務沒有啟動,連接會導致服務啟動),連接 上之后,就可以和服務進行通訊。像播放器的例子,可以允許暫停,重繞等等。
Content Provider
應用程序可以在文件中,數據庫或者其他設備存儲他們的數據。Content Provider用于將各個應用程序的數據進行共享,Content Provider是一個類,執行一套標準的方法,讓其他的應用程序存儲和獲取Content Provider所處理的數據
轉載自:http://blog.csdn.net/lixinye0123/archive/2008/04/16/2296916.aspx