2013-04-28 39 views
28

任何人都可以向我解釋Android平臺上的「活動」和「意圖」之間的區別嗎?Android中的活動和意圖有什麼區別?

+6

它是一個啓動問題。一旦你得到它,沒有回頭看。 – Siddharth 2013-04-28 09:04:18

+0

任何解釋爲什麼我的答案被接受,並在一週後未被接受?我不介意,但接受的答案不簡明,沒有結構,也沒有提供進一步的閱讀。當時也沒有任何讚揚。 – Gusdor 2013-05-08 07:45:05

回答

36

用非常簡單的語言,Activity是您的用戶界面,無論您使用的用戶界面如何,從一個用戶界面移動時,需要使用Intent啓動該新用戶界面。 Intent是與第一個用戶界面中的數據一起傳遞給另一個用戶界面的事件。

意圖也可以在用戶界面和後臺服務之間使用。當您想要向所有活動和後臺服務廣播數據時,還會傳遞一個Intent

Intent生活作爲一個對象,活動與面子和互動生活。希望它有幫助。

+0

我想在這裏指出一些東西。想象一下,我們有非常簡單的android應用程序。即文本框在這個活動中說你好,我們可以調用this.getIntent()以防其他一些程序或活動向我們發送數據。所以我認爲活動和意圖是緊密相連的。 (如果我錯了,請幫我修理我,我剛剛開始在Android中編程,所以我也在爲一些概念而奮鬥) – 2014-10-16 21:40:33

+0

作爲一個新手,你的回答對我很有幫助。乾杯! – 2016-12-21 08:49:21

+0

隨時待人..高興地幫助 – Siddharth 2016-12-21 10:48:17

4

這些是不能以任何方式互換的不同類別。 Activity子類的預期用途是控制應用程序窗口的內容和行爲。另一方面,它們是簡單的數據交換結構,通常用於啓動新的Activity'並將數據傳遞給它們,但它們也有其他用途。

3

Activity類負責爲您創建一個可放置UI元素的(全屏或浮動)窗口,以便活動與用戶進行交互。

當您想從一個視圖(即一個活動)切換到另一個視圖時,主要使用意圖。

當您在ActivityOne.class目前是和你撥打:

Intent i = new Intent(this, ActivityTwo.class); 
startActivity(i); 

然後ActivityTwo將顯示給用戶。

16

如果您對Intents有所瞭解,那麼當您使用它們開始新的活動時,我可以理解您的困惑。

在最簡單的情況下,你開始一個新的活動是這樣的:

Intent intent = new Intent(this, SomeOtherActivity.class); 
startActivity(intent); 

它肯定看起來像你開始一個活動,並且正在啓動的活動是「意圖」。但是你真正在做的是調用方法startActivity(),並且你正在傳遞一個名爲intent的容器。該容器告訴startActivity()要做什麼。

您可以更清楚地看到它時,你將數據傳遞到一個新的活動

Intent intent = new Intent(this, SomeOtherActivity.class); 
startActivity(intent); 
intent.putExtra("ANIMAL_TYPE", "unicorn"); 
intent.putExtra("ANIMAL_COLOR", "ruby"); 
startActivity(intent); 

現在當你調用startActivity(),它着眼於意圖,並知道它需要啓動SomeOtherActivity類。此外,在SomeOtherActivity類,你可以從像這樣的意圖訪問這些傳遞鍵/值對:

Bundle extras = getIntent().getExtras(); 
if(extras !=null) { 
    String animal = extras.getString("ANIMAL_TYPE"); 
    String animalColor = extras.getString("ANIMAL_COLOR"); 
} 
+0

很好地解釋了。你是否爲Android開發者編寫了教程? – 2013-09-19 08:38:54

18

現有的答案是很好,但這裏是兩個與一些鏈接的一個很基本的定義。

Activity

用於顯示用戶接口的應用程序component。活動類是處理所有用戶交互的地方(按下按鈕,列表選擇)。一個活動指定一個佈局來在屏幕上表示它。

Intent

的意圖是一個系統消息。它可以是系統周圍的broadcast以通知其他應用程序(或您自己的!)的事件,也可以用來請求系統顯示新的活動。

+1

它使用'am'(即活動管理器)啓動「活動」並啓動「Intent」時有什麼不同。 – 2017-05-05 06:23:56

相關問題