举个例子:我现在要从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中取出来。
Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。Intent这个英语单词的本意是“目的、意向”等,对于较少从事于大型平台开发工作的程序员来说,这可能是一个不太容易理解的抽象概念,因为它与我们平常使用的简单函数/方法调用,或者上节中提到的通过库调用接口的方式不太一样。在Intent的使用中你看不到直接的函数调用,相对函数调用来说,Intent是更为抽象的概念,利用Intent所实现的软件复用的粒度是Activity/Service,比函数复用更高一些,另外耦合也更为松散。
Activity间用Intent和Bundle传递参数
传递方:
1 | //点击btn_sub传递 fieldHeight.getText()和 fieldWeight.getText() |
接收方:
1 | Bundle bundle = new Bundle(); |
Bundle携带对象来传输对象
传输的对象需要实现序列化:有两种方式,一种是实现Serializable接口,就是原来的java方式;另外一种是android的Parcelable方式,这个性能可能好一些,我猜的,但是这在需要手动去写Parcelable接口的实现。
Serializable存数据:
1 | Person mPerson = new Person(); |
Serializable取数据:
1 | // 获取启动该ResultActivity的Intent |
Parcelable存数据:
1 | Intent mIntent = new Intent(this,ObjectTranDemo2.class); |
Parcelable取数据:Book mBook = (Book)getIntent().getParcelableExtra(ObjectTranDemo.PAR_KEY);
参考:Intent 传值和 Bundle传值的区别
Android中Intent传递对象的两种方法(Serializable,Parcelable)
http://my.oschina.net/u/577632/blog/76906