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一個