Intent传值与Bundle传值的区别(源码分析)

> Intent传值的源码:

public class Intent implements Parcelable, Cloneable {

public Intent putExtra(String name, String value) {
        if (mExtras == null) {
            mExtras = new Bundle();
        }
        mExtras.putString(name, value);
        return this;
    }
> Bundle传值源码:

public final class Bundle implements Parcelable, Cloneable {

public Bundle() {

        mMap = new ArrayMap<String, Object>();
        mClassLoader = getClass().getClassLoader();
    }
public void putString(String key, String value) {
        unparcel();
        mMap.put(key, value);
    }

  你怎么传 如果用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,比函数复用更高一些,另外耦合也更为松散。
  Android中与Intent相关的还有Action/Category及Intent Filter等,另外还有用于广播的Intent,这些元素掺杂在一起,导致初学者不太容易迅速掌握Intent的用法。在讲解这些名词之前,我们先来从下面的例子中感受一下Intent的一些基本用法,看看它能做些什么,之后再来思考这种机制背后的意义。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: IntentBundle 是 Android 开发中常用的两种数据传递方式,它们的区别在于 Intent 是用于不同组件之间传递数据的,而 Bundle 则是用于同一组件中不同方法之间传递数据的。具体来说,Intent 可以用于启动一个新的 Activity,并将数据传递给它,而 Bundle 则通常用于在一个 Activity 内部的不同方法之间传递数据。同时,Intent 还可以用于指定目标组件的详细信息(如 Activity 的类名、Action、Category 等),而 Bundle 则只是一个用于存储键值对的容器。 ### 回答2: IntentBundle都是Android中用于Activity之间传递数据的方法,它们之间的区别和联系如下: Intent是Android开发中常用的跳转或者启动Activity的方法,使用Intent传值,需要在调用目标Activity时通过Intent将需要传递的数据一一加入Intent中,然后再在被调用Activity的onCreate()方法中获取这些值。Intent传递数据的方式有两种:一种是通过putExtra()方法加入数据,并通过getExtra()方法获取相应的数据;另一种是通过自定义Parcelable类,将对象作为Intent的Extra进行传递。此外,Intent也可以携带Bundle类型的Extra数据,进行传递和获取。 Bundle是一种用于Android中传递数据的容器类,它可以携带多组数据,并以键值对的形式存在。和Intent不同的是,Bundle主要是用于在同一个Activity中进行数据传递,将数据打包成“包裹”(Bundle)的形式,然后在需要的地方进行接收。BundleIntent都可以携带数据,但是主要作用是不同的,Intent的主要作用是进行Activity之间的跳转和数据传递,而Bundle的主要作用是在同一个Activity中传递数据。 综上所述,IntentBundle都是为了在Android应用中传递数据而作的。有了Intent,我们可以在不同的Activity之间实现数据的传递和跳转;有了Bundle,我们可以在同一个Activity中轻松地传递多个数据。两种方式各有自己的用途,使用时需要根据需求选择合适的一种方法。 ### 回答3: 在Android开发中,IntentBundle都可以用来传递数据,但是两者有很多不同之处。 Intent是Android系统中的一种消息传递机制,用于在不同组件之间传递消息。它可以用来启动一个Activity、Service、BroadcastReceiver或者是开启一个隐式的组件。Intent可以传递任何类型的数据,包括基本类型,序列化对象和自定义数据类型。Intent可以使用putExtra()方法传递数据,也可以使用setData()指定数据URI。在使用Intent传递数据时,需要注意Intent的生命周期,如果在Activity onActivityResult()方法里接收数据,需要在startActivityForResult()方法中设置请求码,在返回数据时readFromIntent()方法中获取数据。 Bundle是Android中的一个键值对的集合,用于在同一组件中传递数据。Bundle通常用于在一个Activity中向另一个Activity传递数据。它也可以传递任何类型的数据,包括基本类型、序列化对象和自定义数据类型。Bundle使用put()方法传递数据,可以使用不同的键名来指定不同的数据类型。在使用Bundle传递数据时,需要注意Bundle的生命周期,如果在onCreate()方法中获取数据,需要在启动另一个Activity之前将数据放入Bundle中。 总的来说,IntentBundle都可以用来传递数据,在不同的场景下有不同的用途和限制。使用Intent可以在不同组件之间传递数据,但是需要注意Intent的生命周期;使用Bundle可以在同一个Activity中传递数据,但是需要注意Bundle的生命周期。因此,在使用IntentBundle时,需要根据实际情况选择合适的方式来传递数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值