Intent intent = new Intent(this, DisplayMessageActivity.class); // sets target activity
EditText editText = (EditText) findViewById(R.id.edit_message); // finds edit text
String message = editText.getText().toString(); // pull edit text content
intent.putExtra(EXTRA_MESSAGE, message); // shoves it in intent object
比方說這個=活動A,和你的DisplayMessageActivity =活動B
在這種情況下,你獲得從活動一編輯文本的內容和你在使用意圖對象傳達其內容活動B 。活動B,中值是感興趣的,必須將其拉出意向對象的,所以它會做一般在其的onCreate()以下:
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
這通常是幸福的,但常見的情況。
但是,如果活動B在堆棧中已經存在,並且活動A想清楚返回堆棧再次達到活動B,活動B將有一個新意圖在其onNewIntent交付(意向theNewIntent)方法,你將不得不在活動B中重寫以查看此新意圖。否則,你會被卡住,處理最初收到的活動B的原意。
修訂
聽起來像你感興趣的意圖的內部,以及你如何得到的意圖的「EXTRA_MESSAGE」的一部分。意圖存儲鍵值對,所以如果你想要得到的重要組成部分,something like the following would work:
for (String key : bundle.keySet()) {
Object value = bundle.get(key);
Log.d(TAG, String.format("%s %s (%s)", key,
value.toString(), value.getClass().getName()));
}
的內部的快速概覽是意圖使用Android的IPC(進程間通信)。實質上,對操作系統友好的唯一數據類型是原始類型(int,long,float,boolean等),這就是爲什麼putExtra()只允許存儲原語的原因。然而,putExtra()也允許包容性,並且任何將自身定義爲Parcelable的對象基本上定義了Java對象如何向下流入其基元,從而允許意圖再次處理這些友好的數據類型,因此在那裏沒有魔法。這很重要,因爲Intents充當Binder層的包裝。 Binder層是Intent對象的基礎結構,並且此實現位於Android的本機層(c/C++部分)中。實際上,本地層處理編組/解組備份到java層,您的活動B獲取數據。
I realize this simplification might be skipping too many details, so reference this pdf for better understanding.
你的意思是如何Android的處理過程在後臺或只是一般它是如何在一般的應用程序使用? – zgc7009
[如何使用putExtra()和getExtra()作爲字符串數據的重複](http://stackoverflow.com/questions/5265913/how-to-use-putextra-and-getextra-for-string-data) – hungryghost
我的疑問是,putExtra()是如何工作的?我的意思是它如何在2個參數上工作?如果它存儲EXTRA_MESSAGE +消息,然後提取爲什麼我只是收到消息方,而不是EXTRA_MESSAGE中寫入的內容? – user1712778