組件從字面看意思就是組合部件。
在程序中使用組件設計思想是在軟件規模擴大,複雜度上升的背景下,以面向對象爲基礎而提出的一種軟件設計思想。可以把它理解爲一種更粗粒度的面向對象,其粒度一般大於對象,但具體要到什麼程度,又可以根據實際情況來決定。這種思想以組件爲基礎,強調“服務”的概念。
面向組件具有以下特點:
低耦合性:組件之間一般互不依賴,一個組件只需要知道另一個組件的“名字”就可以訪問它;
高重用性:系統級的重用;
高互操作性:不同的開發商開發出來的組件只要定義好了接口就可以互相訪問;
進程的透明性:組件可以工作在同一個進程也可以工作在不同的進程;
語言和開發環境的獨立性:組件只需要定義好服務接口,內部實現可以採用任何語言。
面向組件的框架已經有很多了,如JavaBean、EJB、COM等。Android系統並沒有聲稱自己是面向組件的,但從其設計思想來看,Android一開始的設計考慮就是要採用一種“無邊界”的設計方式,要實現系統內資源高度的重用。
首先要有一個組件容器,負責加載和運行組件。
其次要有一個統一的接口或基類,用來規範組件行爲,方便加載和調用。
還要有一個配置信息文件,通知組件容器具體加載那個組件。
每個組件都有自己的生命週期方法,組件容器會在特定的條件下調用不同的生命週期方法。
Android完全符合面向組件的特徵,它提供了Activity、Service、BroadcastReceiver和ContentProvider四大組件,它都是組件的基類。
還有ServiceManager與ActivityManagerService這2個系統服務用於充當組件容器,它是保證組件間協同工作的最重要的基礎,同時它們本身也是一種組件。Android各個組件之間實現了低耦合,Activity與Activity、Activity與Service、Service與Service之間的都只需知道對方的“名字”就可以訪問它。而且,它們之間的重用是系統級的,尤其是Service,任何部署在系統裏的Service可以爲任何一個應用,任何一個進程,任何一個組件來提供服務。它也滿足高互操作性,任何開發者開發出來的組件,只要公佈其接口就可以爲其他開發者所用。
AndroidManifest.xml清單文件,所有組件都必須在它裏面註冊纔可以使用。
切記,永遠不要手動創建組件實例,或手動調用生命週期方法,這些工作都應該是組件容器完成的