Intent和Bundle的区别

http://blog.csdn.net/xiaoban3/article/details/47450617

已经写了好多关于Intent的语句了。回想一下,在Activity之间传递数据的时候可以直接在intent.putExtra()中,也可以先放到Bundle中,然后在将Bundle放置到Intent中。

既然都可以存放数据,那么Bundle存在的必要时什么呢?  趁着闲暇时间,为自己解惑。分析如下:

Android中提供了Intent机制来协助应用间的交互与通讯。

Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。

Android中与Intent相关的还有Action/Category及Intent Filter等,另外还有用于广播的Intent

Bundle 存数据:
                    Bundle bundle = new Bundle(); 
                    bundle.putString("userName", "username"); 

                    intent = new Intent(); 
                    intent.putExtras(bundle);

Bundle 取数据:
                   Bundle bundle = this.getIntent().getExtras(); 
                   String str=bundle.getString("USERNAME");

直接往Intent中 存放数据 的时候:
               intent.putExtra("name","realname");
         实际上内部是这么实现的---
               public Intent putExtra(String name, boolean value) {
                    if (mExtras == null) {
                    mExtras = new Bundle();
                    }
                    mExtras.putBoolean(name, value);
                    return this;
          } 

直接从Intent中 取数据 的时候:
     在Intent中有一个变量:  private Bundle mExtras;

     在Activity中是用  getIntent.getStringExtra("name") 提取上一个Actiivty给此页面传递的数据时,
          实质上还是执行了下面的方法:
         public String getStringExtra(String name) {
             return mExtras == null ? null : mExtras.getString(name);
         }
即还是在Bundle中取值.

总结:    Intent旨在数据传递,bundle旨在存取数据,
           intent内部还是用bundle来实现数据传递的,只是封装了一层而已。

           在使用的时候如果需要传递的数据比较多,还是用Bundle来存储数据比较好。毕竟人家是专门做这个的。还有一个好处就是,如果您在ABC三个页面中传值且顺序必须是ABC,直接传递Bundle的数据就好了。而不用在 B 将数据从Intent拿出来,然后封装到新的Intent,传递到C,多此一举。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值