天天看點

Intent的設想與天馬行空

首先聲明,本人不是一個專門搞android的,對android 也隻是了解,能寫個helloword的水準。如下内容,如有專業錯誤,敬請指出并見諒。另外,該處的intent并不是單單的就定位于android的intent通信對象,而是使用該對象的設計思想,以及對其應用的一些擴充思考。

所有内容都隻是突然發現這個intent好像很神奇,心裡總覺得,這個intent能夠帶來一些什麼改變,具體是什麼,卻又好像很模糊。

Ok。我想很多人已經基本了解了android中的intent對象了。據我的了解就是,它可以用來執行某個動作,執行動作的同時必然是攜帶資訊的。比如說,我要啟動一個activity,或者啟動一個服務,打開浏覽器,轉到某個位址,或者撥打電話等等。Intent翻譯過來就是意圖的意思。也就是說,根據這個意圖就能夠執行相應的動作。Intent分為顯示意圖和隐式意圖。那麼它與傳統的通信行為有什麼不同呢?

比如說,在.Windows窗體中,我們要啟動一個form,那麼就構造一個form,然後傳遞參數。我們點選了一個按鈕,要相應一個行為,那麼我們需要傳遞一個EventArgs 和object sender,很明顯,啟動一個行為中間傳遞就是單純的參數,而intent的設計是将兩個對象和msg共同放在了一起,隻要有了這個intent就可以了。就向下圖一樣

傳統的通信模型:

<a target="_blank" href="http://blog.51cto.com/attachment/201110/164935623.png"></a>

Intent通信模型

<a target="_blank" href="http://blog.51cto.com/attachment/201110/164945523.png"></a>

在從另外一個方面對比,也即從行為上講,傳統的行為模式是,A要使用某種服務,A發現B提供了這種服務,那麼A就要向B所要該服務,取到該服務後,在本地調用,這是一個被動服務的過程。而Intent的模式A也要使用服務,分為兩種情況,1 他知道B提供這種服務,ok,他向B推送一個通知,告知B:我要使用你的服務,我給你的參數是msg,給我結果吧。也就是啟動了一個intent。2. 他不知道誰能提供之中服務,但是他知道 C知道 誰能提供這種服務,ok,他向C 推送消息,構造一個intent,C就幫助完成該intent,并傳回該intent的執行結果,究竟是由誰來接收執行該intent,C做出完美的選擇,這就像是一個隐式意圖。 Intent模式,是一個主動服務的過程。如下圖所示

傳統模式

<a target="_blank" href="http://blog.51cto.com/attachment/201110/164958487.png"></a>

Intent模式

<a target="_blank" href="http://blog.51cto.com/attachment/201110/165007218.png"></a>

Intent模式中的服務方 主動服務以及不負責“取”隻負責用的特性使其優勢倍增。

這些是對android中intent的一些分析。Google還要在chrome中引入web intent的概念,在網上找了找,相關的東西不多。有的也隻是簡單的介紹,以及使用,設計理念和思想的介紹沒找到。

我想了想,如果,

如果提供一個統一intent的托管平台,無論是本地應用程式(當然是浏覽器)還是網絡平台(網站),定義統一intent服務類型以及intent msg,以及注冊應用等,那麼會給應用程式帶來的變化是什麼呢?

我要在我所有的微網誌上同步一條資訊,那麼隻需要向網絡抛出該資訊就可以啦。等等等等

寫到最後,發現這些東西很難表達,似有似無,說的不太清楚。或者是視野還太狹隘,最終的落腳點沒有達到原本期望的高度,有一些神奇還沒有發現。希望有朋友能夠指點一二。Thanks very much。

本文轉自HDDevTeam 51CTO部落格,原文連結:http://blog.51cto.com/hddev/696679,如需轉載請自行聯系原作者

繼續閱讀