Android 台灣中文網

標題: 高煥堂(1)講解 Intent-based Programming [打印本頁]

作者: 暗桌之光    時間: 2011-8-21 14:19
標題: 高煥堂(1)講解 Intent-based Programming
本帖最後由 暗桌之光 於 2011-8-21 14:19 編輯

        Android的4種嫡系組件(即Activity、Service、IntentReceiver和ContentProvider)之間如何互相溝通呢?這4種嫡系組件都是由Android啟動的,並不是組件之間透過直接呼叫而啟動的。就像我們打手機去車行叫出租車,而不是直接到街道上叫車。我們送給行一個簡訊一通電話,表明我們的「意圖」(Intent),當車行經理接到此意圖,就依據你的意圖的內含條件而去挑選最合適的出租車,然後派遣它去接你。

   「意圖」(Intent)本身是定義為一個類別(Class),一個Intent對像表達一個目的(Goal)或期望(Expectation),敘述其所期望的服務或動作、與動作有關的數據等。Android則根據此Intent對像之敘述,負責配對,找出相配的組件,然後將 Intent對像傳遞給所找到的組件,Android的媒婆任務就完成了。
     
    因此,Intent對像扮演著媒體中介的角色,提供「Client組件  Android  Server組件」之間互相溝通的相關訊息,實現了Client組件與Server組件之間『不知而亦能用』之效果,這又稱為疏結合(Loosely-coupled)效果。其創造了Server組件抽換的自由度,這又稱為PnP(Plug and Play)。
    茲以下圖為例,Activity主要是提供UI畫面來與User進行互動,兩個Activity之間的直接互動較少。其它如ContentProvider則常是為Activity等提供服務的。所以Activity發出Intent對像委託Android挑選到適當的ContentProvider對像(並且將Intent對像傳遞給ContentProvider對像)之後,通常會透過ContentProvider接口而呼叫ContentProvider的各項服務或功能。
 
a1.JPG
登錄/註冊後可看大圖