Intent本身就可以传递参数(Intent.putExtra(“key”, value))为何还要用Bundle呢?
两者比较
- Bundle只是一个信息的载体,内部其实就是维护了一个Map
。 Intent负责Activity之间的交互,内部是持有一个Bundle的。
putExtra()方法的源码
1234567public Intent putExtra(String name, boolean value) {if (mExtras == null) {mExtras = new Bundle();}mExtras.putBoolean(name, value);return this;}putExtras(Bundle bundle):会将Intent的内部Bundle替换成参数bundle。
应用场景
例1:
从A界面跳转到B界面或者C界面
这样的话 我就需要写2个Intent 如果你还要涉及的传值的话 你的Intent就要写两遍添加值的方法。那么,如果我用1个Bundle,直接先存值,然后再存到Intent中 不就更简洁吗?例2:
现在要把值通过Activity A经过Activity B传给Activity C。如果用Intent的话,A-B先写一遍,再在B中都取出来 然后在把值塞到Intent中,再跳到C。
如果在A中用了 Bundle 的话,把Bundle传给B,在B中再转传到C,C就可以直接去取了。
bundle使用场景
- 在设备旋转时保存数据
|
|
|
|
- Fragment之间传递数据
比如,某个Fragment中点击按钮弹出一个DialogFragment。
最便捷的方式就是通过Fragment.setArguments(args)传递参数。
所以,Bundle是不可替代的。