Android系統中有著名的四大組件:Activity、Service、BroadcastReceiver、ContentProvider。一個商業的Android應用程序,一般由多個基本的組件聯合組成。這四大組件,在使用的時候均須要在清單文件AndroidManifest.xml中進行註冊,不然不予使用。本小節將對這些組件進行簡單的介紹,使讀者對Android應用開發的內容有一個大體的認識。架構
活動(Activity)ide
Activity是Android應用中,最直接與用戶接觸的組件,它負責加載View組件,使其展示給用戶,並保持與用戶的交互。全部的Activity組件均須要繼承Activity類,這是一個Content的間接子類,包裝了一些Activity的基本特性。佈局
View組件是全部UI組件、容器組件的基類,也就是說,它能夠是一個佈局容器,也能夠是一個佈局容器內的基本UI組件。View組件通常經過XML佈局資源文件定義,同時Android系統也對這些View組件提供了對應的實現類。若是須要經過某個Activity把指定的View組件顯示出來,調用Activity的setContentView()方法便可,它具備多個重載方法,能夠傳遞一個XML資源ID或者View對象。this
例如: 操作系統
LinearLayout layout=new LinearLayout(this);setContentView(layout);
或者:
setContentView(R.layout.main);
Activity爲Android應用提供了一個用戶界面,當一個Activity被開啓以後,它具備本身的生命週期。Activity類也對這些生命週期提供了對應的方法,若是須要對Activity各個不一樣的生命週期作出響應,能夠重寫這些生命週期方法實現。對於大多數商業應用而言,整個系統中包含了多個Activity,在應用中逐步導航跳轉開啓這些Activity以後,會造成Activity的回退棧,當前顯示並得到焦點的Activity位於這個回退棧的棧頂。xml
服務(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的歷史與現狀、系統架構、基本組件有個大體的瞭解,這對本書接下來的內容理解很是有幫助。