2010-04-07 79 views
7

我不太瞭解意圖的使用和概念。我明白,一個活動是一個可視界面和一個用戶可以參與的努力。我認爲一個活動用於在不同活動之間發起和交流。如果是這樣,那麼你將如何實現?代碼示例會很有幫助。以類比的形式,嘗試將意圖與日常生活中的某些事物進行比較。這非常有幫助!Android中的意圖的概念?

+1

它與事件類似,作爲一種簡化。 – 2010-04-07 01:47:28

回答

5

可以使用Intent通過提供動作和一些數據來啓動活動。使用Intent操作來查看一個網頁的例子:

Intent myIntent = new Intent(Intent.VIEW_ACTION, 
        Uri.parse("http://www.google.com")); 

行動的地方Intent.VIEW_ACTION和數據線是谷歌網站的Uri

Common Tasks and How To Do Them in Android

我都試過了,但其強硬的一個Intent在日常生活中的東西進行比較。如果我想出點什麼,我會用我的答案記下來。

0

你說得對,它是在應用程序之間啓動和通信的。

http://developer.android.com/guide/topics/fundamentals.html

這有意圖的基礎。如果需要返回值,則需要使用.startActivityForResult()而不是startActivity(),並且在返回值時使用onActivityResult(Intent intent)方法充當監聽器。

該構造函數需要2部分。首先是一個int,它在Intent類中是一個常量,用來告訴系統你想要對數據做什麼。第二個將是一個在活動之間傳遞數據的URI。系統然後使用它們來決定將它放入活動請求時應傳遞給哪個App。至於你的比喻,我不知道,那有點困難,沒有什麼比這更像。我想最接近你會得到的東西是給你的老闆,告訴他你需要別人去做一些你不能做的事情。

6

引述API docs,一個Intent基本上是一個被動數據結構保持的的動作的抽象描述要執行,具有兩個伯條信息,動作和數據。

從最基本的層面來看,Intent可以被看作是一個你可以告訴Android調用的動作 - 而發生什麼取決於該動作的註冊內容。

Intent的動作部分是字符串或字符串常量,數據部分是表示URI的字符串。除了這些主要屬性之外,還可以通過額外的屬性添加新的屬性,這只是鍵值對的映射。

欲瞭解更多信息,請參閱Intents and Intent Filters,Intent類或Playing with Intents

我還推薦書Pro Android,詳細地瞭解這些API的細節。有一個稱爲Pro Android 2的新版本(還沒有讀過)。

如果您搜索Google Books for it,您可以看到該書的摘錄,查看第3章「使用資源,內容提供者和意圖」以獲取更多信息。

1

一個意圖本質上是一種應用程序聲明需要的方式。這些工作與IntentFilters一起工作,基本上是另一個Activity或Service可以爲任何人需要的功能的聲明。

意圖通常由兩部分構成,一部分信息和一個數據部分,通常是一個URI(想一個網站,GPS數據或撥打聯繫人)。

要使用意圖,您必須使用此類信息和數據創建您的意圖,然後將其分派到另一個活動,服務或廣播接收器,然後通常綁定意圖並執行您請求的某種操作。

Android API詳細介紹瞭如何構建自己的IntentFilters和Receiver的具體細節。在那裏尋找更多的信息。

1

假設你在你的朋友一間兩間屋子裏,沒有門,沒有屋頂,你想給他一些他需要的東西。所以你要做的就是把它放在你房間的普通牆壁上,以便他可以從另一邊拿走那個東西。 可能你會轉儲一些onfo意圖(在某些活動),這是全球性的,並從另一端(在下一個活動)採取該信息。

3

我發現意圖很熟悉,尤其是在應用程序集成方面的一些經驗。 intents基本上是消息,Android intent/activity對是一個message based architecture使用單播和多播,保證交付(我相信)的異步消息,但沒有保證排序。

基於消息的交互的美妙之處在於,在代碼依賴性(它們只需知道共享意圖類型及其有效負載)方面,它們可以相互分離活動,並且就其生命週期而言(Android是我理解它可以在消息交易中免費停止和恢復任何一方)。這樣可以更輕鬆地維護和修改活動,重用現有活動,並允許有效使用資源。

0

開發指南中的Application Fundamentals將意圖定義爲「異步消息」。爲了更好地理解它們與「消息」的區別,可以將它們與Microsoft Windows世界中的WM_COMMAND消息進行比較,因爲根據定義,它們應該啓動一個操作(而不是僅傳遞信息)。

1

簡單的現實世界的例子,根據我的理解, 發送郵件的傳統方式,即郵政服務,你有一封帶有發信人和收信人簽名的信函封面(封面和郵票可以認爲上下文 - 如果我沒有錯誤),並且裏面的實際字母可以被認爲是數據,郵遞員攜帶的全部字母(封面+實際字母數據)是意圖,郵遞員是OS:) 希望這給出一些想法。