美文网首页
Intent和Bundle的区别

Intent和Bundle的区别

作者: 芽芸 | 来源:发表于2017-04-19 16:52 被阅读0次

    已经写了好多关于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,多此一举。

    相关文章

      网友评论

          本文标题:Intent和Bundle的区别

          本文链接:https://www.haomeiwen.com/subject/tidhzttx.html