有一篇文章介绍这两种东西的关系
在开发软件的过程中,遇到过这样一种情况,就是没有create bundle,但是当你使用intent.putExtra之后,在另一个被call的activity中,会有bundle被传递过去,
原因就是因为intent.putExtra时,系统会检测有没有bundle,如果没有,则新建一个。所以下面这两个语句的等效的:
1
- Intent intent = new Intent(this,xxx.class);
- intent.putExtra("test", true);
- startActivity(intent);
2
- Intent intent = new Intent(this,xxx.class);
- Bundle bundle = new Bundle();
- bundle.putBoolean("test", true);
- intent.putExtras(bundle);
- startActivity(intent);
- Intent intent = new Intent();
- intent.putExtra("test_value", "TEST_V");
- Bundle bundle = new Bundle();
- bundle.putString("test_value", "TEST_V");
- intent.putExtras(bundle);
- Bundle bundle = this.getIntent().getExtras();
举个例子 我现在要从A界面 跳转到B界面或者C界面
这样的话 我就需要写2个Intent 如果你还要涉及的传值的话 你的Intent就要写两遍添加值的方法 那么 如果我用1个Bundle 直接把值先存里边 然后再存到Intent中 不就更简洁吗?
另外一个例子 如果我现在有 Activity A ,B ,C;
现在我要把值通过A经过B传给C
你怎么传 如果用Intent的话 A-B先写一遍 再在B中都取出来 然后在把值塞到Intent中 再跳到C 累吗?
如果我在A中用了 Bundle 的话 我把Bundle传给B 在B中再转传到C C就可以直接去了
这样的话 还有一个好处 就是在B中 还可以给Bundle对象添加新的 key - value 同样可以在C中取出来