Android的面向組件思想

來源:互聯網
上載者:User

標籤:

http://blog.csdn.net/luoxinwu123/article/details/8019547

面向組件思想是在軟體規模擴大,複雜度上升的背景下,以物件導向為基礎而提出的一種軟體設計思想。可以把它理解為一種更粗粒度的物件導向,其粒度一般大於對象,但具體要到什麼程度,又可以根據實際情況來決定。這種思想以組件為基礎,強調“服務”的概念。

面向組件具有以下特點:

低耦合性:組件之間一般互不依賴,一個組件只需要知道另一個組件的“名字”就可以訪問它;

高重用性:系統級的重用;

高互通性:不同的開發商開發出來的組件只要定義好了介面就可以互相訪問;

進程的透明性:組件可以工作在同一個進程也可以工作在不同的進程;

語言和開發環境的獨立性:組件只需要定義好服務介面,內部實現可以採用任何語言。

 

面向組件的架構已經有很多了,如JavaBean、EJB、COM等。Android系統並沒有聲稱自己是面向組件的,但從其設計思想來看,Android一開始的設計考慮就是要採用一種“無邊界”的設計方式,要實現系統內資源高度的重用。

 

事實上,Android完全符合面向組件的特徵。首先,Android提供了Activity、Service、BroadcastReceiver和ContentProvider四大組件。這四大組件之間的協作是通過Binder機制和來協作的,其中ServiceManager與ActivityManagerService是保證組件間協同工作的最重要的基礎,同時它們本身也是一種組件。ServiceManager是Binder的守護進程,用來管理各種服務,並向調用這些服務的客戶提供查詢遠程介面的功能。而ActivityManagerService負責所有Activity和Service的啟動,另外還負責系統中所有廣播的註冊和發布以及把廣播發送給接收者。

 

有了這個機制,Android各個組件之間實現了低耦合,Activity與Activity、Activity與Service、Service與Service之間的都只需知道對方的“名字”就可以訪問它。而且,它們之間的重用是系統級的,尤其是Service,任何部署在系統裡的Service可以為任何一個應用,任何一個進程,任何一個組件來提供服務。它也滿足高互通性,任何開發人員開發出來的組件,只要公布其介面就可以為其他開發人員所用。Android對進程完全透明,取而代之的,在Android裡,一般用Task的概念來作為應用的邊界,一個Task可以是單個進程也可以是多個進程。Activity與Service的協作既可以在同一個進程又可以在不同進程完成。如,啟動Activity的startActivity函數,如果新Activity配置了android:process這個屬性,那麼,它就會運行在另一個進程中 ,否則運行在同一進程中。而啟動Service的方式有兩種,如下:

startService:運行在不同進程;

bindService:運行在統一進程。

啟動過程都是通過binder機制來通知ActivitManagerService來決定是否要建立一個進程,並啟動新的Activity或Service。

Android的面向組件思想

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.