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