標籤:
Android系統中有著名的四大組件:Activity、Service、BroadcastReceiver、ContentProvider。一個商業的Android應用程式,通常由多個基本的組件聯合組成。這四大組件,在使用的時候均需要在資訊清單檔AndroidManifest.xml中進行註冊,否則不予使用。本小節將對這些組件進行簡單的介紹,使讀者對Android應用開發的內容有一個大致的認識。
活動(Activity)
Activity是Android應用中,最直接與使用者接觸的組件,它負責載入View組件,使其展現給使用者,並保持與使用者的互動。所有的Activity組件均需要繼承Activity類,這是一個Content的間接子類,封裝了一些Activity的基本特性。
View組件是所有UI組件、容器組件的基類,也就是說,它可以是一個版面配置容器,也可以是一個版面配置容器內的基本UI組件。View組件一般通過XML布局資源檔定義,同時Android系統也對這些View組件提供了對應的實作類別。如果需要通過某個Activity把指定的View組件顯示出來,調用Activity的setContentView()方法即可,它具有多個重載方法,可以傳遞一個XML資源ID或者View對象。
例如:
LinearLayout layout=new LinearLayout(this);
setContentView(layout);
或者:
setContentView(R.layout.main);
Activity為Android應用提供了一個使用者介面,當一個Activity被開啟之後,它具有自己的生命週期。Activity類也對這些生命週期提供了對應的方法,如果需要對Activity各個不同的生命週期做出響應,可以重寫這些生命週期方法實現。對於大多數商業應用而言,整個系統中包含了多個Activity,在應用中逐步導航跳轉開啟這些Activity之後,會形成Activity的回退棧,當前顯示並獲得焦點的Activity位於這個回退棧的棧頂。
服務(Service)
Service主要用於在後台完成一些無需向使用者展示介面的功能實現。通常位於系統後台運行,它一般不需要與使用者進行互動,因此Service組件沒有使用者介面展示給使用者。Service主要用於完成一些類似於下載檔案、播放音樂等無需使用者介面與使用者進行互動的功能。
與Activity組件需要繼承Activity類相似,Service組件同樣需要繼承Service類,Service類也是Context的間接子類,其中封裝了一些Service的專有特性。一個Service被運行起來之後,它將具有自己獨立的生命週期,Service類中對其各個不同的生命週期提供了對應的方法,開發人員可以通過在Service中重寫Service類中這些生命週期方法,來響應Service各個生命週期的功能實現。
廣播接收器(BroadcastReceiver)
BroadcastReceiver同樣也是Android系統中的一個重要組件,BroadcastReceiver代表了一個廣播接收器,用於接收系統中其它組件發送的廣播,並對其進行響應或是攔截廣播的繼續傳播。
廣播是一個系統級的訊息,當系統內容發生改變的時候會發送一些廣播供對應的程式進行接收響應,例如:接收到一條簡訊、開機、關機、插上充電器、插上耳機、充電完成等,均會發送一條廣播供需要監聽此類廣播的應用進行響應。除了一些系統事件的廣播,開發人員也可以自訂廣播內容。但是大部分情況下,開發應用的時候主要用於接受系統廣播並對其進行響應,很少需要發送自訂的廣播。
使用BroadcastReceiver組件接收廣播非常的簡單,只需要實現自己的BroadcastReceiver子類,並重寫onReceive()方法,就能完成BroadcastReceiver,而對於這個BroadcastReceiver對什麼廣播感興趣,則需要對其進行另行配置。
內容提供者(ContentProvider)
Android系統作為一個智能作業系統,它需要系統中啟動並執行應用程式都必須是相互獨立的,各自運行在自己的Dalvik VM執行個體中。在正常情況下,Android應用之間是不能進行即時的資料交換,而考慮到有些應用的資料需要對外進行共用,Android系統提供了一個標準的資料介面ContentProvider,通過應用提供的ContentProvider,可以在其它應用中對這個應用的暴露出來的資料進行增刪改查。
為應用程式暴露資料介面非常的簡單,只需要繼承ContentProvider類,並且實現insert()、delete()、update()、query()等方法,使外部應用可對本應用的資料進行增刪改查。
意圖(Intent)
雖然Intent並不是Android應用的組件,也無需專門在資訊清單檔中配置,但是它對於Android應用的作用非常的大。除了ContentProvider之外,其它組件的啟動,均需要通過Intent進行指定。Intent不僅可以明確指定一個Android組件進行啟動,還可以提供一個標準的行為,再由Android系統配合意圖過濾器來選定啟動指定組件來完成任務。而Intent在開啟對組件的過程中,進行各個組件間資料的傳遞。
小結
本章簡要介紹了Android系統的發展史及其現狀,並且介紹了Android系統的架構與Dalvik VM虛擬機器,最後還簡單介紹了Android開發中的四大組件。通過閱讀本章,對Android的曆史與現狀、系統架構、基本組件有個大致的瞭解,這對本書接下來的內容理解非常有協助。
01_Android應用開發環境_02_Android應用的基本組件