intent.putExtra(Bundle) 和直接用Intent.putExtra("xx",yy)傳遞有什么不同


intent.putExtra(Bundle)和直接用Intent.putExtra("xx",yy)傳遞有什么不同

回復

廣東-蟲子(346345565) 15:39:44

這個問題我來解答吧

回復

廣東-蟲子(346345565) 15:39:54

我首先要批評你

回復

廣東-蟲子(346345565) 15:40:00

第一,這根本就不是個問題

回復

廣東-蟲子(346345565) 15:40:09

第二,這個問題可以谷歌出結果

回復

廣東-蟲子(346345565) 15:40:14

好,現在開始解答

回復

廣東-蟲子(346345565) 15:40:24

首先,Android是開源的

回復

廣東-蟲子(346345565) 15:40:36

任何的類型可以通過查看源碼來得到答案

回復

廣東-蟲子(346345565) 15:40:59

Bundle與Intent有什么不同?感覺兩個用起來一樣啊

回復

廣東-蟲子(346345565) 15:41:16

其實可以查看Android的源碼,你會發現

回復

廣東-蟲子(346345565) 15:41:28

兩者都實現了Java的Parcelable與Cloneable接口

回復

長沙-lysine(272803220) 15:41:38

 

回復

廣東-蟲子(346345565) 15:41:51

這兩個接口可以用來序列化類

回復

廣東-蟲子(346345565) 15:42:01

通俗的講

回復

廣東-蟲子(346345565) 15:42:08

這兩個接口可以存放類

回復

廣東-蟲子(346345565) 15:42:23

因此,Bundle與Intent在整體大結構上是一樣的

回復

廣東-蟲子(346345565) 15:42:33

那為什么兩者都使用?

回復

廣東-蟲子(346345565) 15:42:41

下面用一個場景為你解答

回復

長沙-lysine(272803220) 15:42:44

嗯嗯 

回復

廣東-蟲子(346345565) 15:42:52

我現在有4個Activity,A,B,C,D

回復

廣東-蟲子(346345565) 15:43:08

我要在A中傳遞8個int類型到D中

回復

廣東-蟲子(346345565) 15:43:13

你會怎么做?

回復

廣東-蟲子(346345565) 15:43:23

當然路徑要經過B,C

回復

廣東-蟲子(346345565) 15:43:33

也就是A->B->C->D

回復

廣東-蟲子(346345565) 15:43:45

如果你用傳統的Intent的話

回復

廣東-蟲子(346345565) 15:44:03

你需要PutInt8個吧

回復

長沙-lysine(272803220) 15:44:11

對,是的

回復

廣東-蟲子(346345565) 15:44:21

B用getIntent()收到貨后

回復

廣東-蟲子(346345565) 15:44:36

了個去,又要發Intent,尼瑪再PutInt8次

回復

廣東-蟲子(346345565) 15:44:51

同樣的,C尼瑪的也要8次,那個去,這樣不會死人?

回復

廣東-蟲子(346345565) 15:45:05

如果A直接弄個Bundle過去

回復

長沙-lysine(272803220) 15:45:11

呵呵,這正是我要做的。。有幾個頁面沒辦法

回復

廣東-蟲子(346345565) 15:45:19

人家B與C只需要解個Bundle就可直接傳給D了

回復

廣東-蟲子(346345565) 15:46:06

現在你明白了嗎?

回復

廣東-蟲子(346345565) 15:46:15

好,回答完畢,請鼓掌

回復

武漢-Dreamer(498557849) 15:46:39

 

回復

長沙-lysine(272803220) 15:47:18

 

回復

沈陽-奶茶(627408355) 15:47:32

 

回復

長沙-lysine(272803220) 15:47:46

 還是不懂

回復

北京-木頭(316297629) 15:50:20

用你喜歡的方法來做
(來自手機QQ2012 [Android]:http://mobile.qq.com )

 

回復

長沙-lysine(272803220) 15:52:08

咦, 剛剛看了個網友源碼,的確在第 B個Activity,直接用bundle來做, 不用 賦值了 正確啊

 

回復

武漢-Dreamer(498557849) 15:53:14

不用每次都賦值?

 

回復

武漢-Dreamer(498557849) 15:53:23

就這個區別嗎

 

回復

廣東-蟲子(346345565) 15:53:47

基本上是

 

回復

武漢-Dreamer(498557849) 15:54:16

那和jsp容器有點一樣啊,生命周期不一樣

 

回復

長沙-lysine(272803220) 15:54:37

是的 我們從 Bundle字面上英語就是 捆綁 包袱 , 就是說 它在A 打包好數據后, 我們就可以直接在 B C D用了。

 

回復

武漢-Dreamer(498557849) 15:54:37

request,和session Application什么的

 

回復

廣東-蟲子(346345565) 15:56:38

你看過Intent代碼會發現

 

回復

廣東-蟲子(346345565) 15:56:51

Intent里面有個Bundle字段,因此什么都明白了

 

回復

廣東-蟲子(346345565) 15:57:04

你重寫了putXXX方法

 

回復

廣東-蟲子(346345565) 15:57:18

Intent的putXXX是Bundle的貨

 

回復

廣東-蟲子(346345565) 15:57:36

 

 

回復

深圳-...(125721515) 15:57:40

蟲子還牛X

 

回復

廣東-蟲子(346345565) 15:58:05

而Bundle之所以可以putXXX,看源碼你就會明白

 

回復

廣東-蟲子(346345565) 15:58:10

它妹的是HashMap

 

回復

廣東-蟲子(346345565) 15:59:24

 

回復

深圳-...(125721515) 15:59:42

 

 

回復

廣東-蟲子(346345565) 15:59:46

建議大家准備Android源碼一份

 

回復

廣東-蟲子(346345565) 15:59:54

Source Insight一個


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM