`

Bundle传递对象后,内存中该对象地址的问题

阅读更多

在Fragment中传递 对象时发现了一个问题:将Appcation中全局对象传递一次后,发现该对象一直为null,这让我很郁闷

Bundle bundle = new Bundle();

bundle.putSerializable("custom", MyApplication.getInstance().getCustom());

mFragmentPersonal.setArguments(bundle);



custom = (Custom)getArguments()

.getSerializable("custom");



然后再通过MyApplication.getInstance().getCustom()的对象一直为null

没看源代码,以后探索,我觉得是Bundle在传递对象后,只能通过Key的方式获取,该对象以前的内存地址内容清空了。

 

然后我在考虑 是不是只是清空了该内存地址的一个引用,于是使用

 

 

Custom cus =  MyApplication.getInstance().getCustom();
bundle.putSerializable("custom", cus);

 

结果还是为null,说明不是清空一个引用

 

确认的之前和之后的Application是同一个对象

 

分享到:
评论

相关推荐

    Android 通过Intent使用Bundle传递对象详细介绍

    Android开发中有时需要在应用中或进程间传递对象,下面详细介绍Intent使用Bundle传递对象的方法。 被传递的对象需要先实现序列化,而序列化对象有两种方式:java.io.Serializable和android.os.Parcelable Java中...

    在Android中通过Intent使用Bundle传递对象的使用方法

    Android开发中有时需要在应用中或进程间传递对象,下面详细介绍Intent使用Bundle传递对象的方法。 被传递的对象需要先实现序列化,而序列化对象有两种方式:java.io.Serializable和android.os.Parcelable Java中...

    Fragment与Activity使用Bundle传递数据

    4. **注意生命周期**:在使用Bundle传递数据时,需要注意Activity和Fragment的生命周期。当Activity或Fragment被销毁后,它们保存的Bundle数据可能会丢失。因此,对于跨Activity的数据传递,一般推荐使用Parcelable...

    Android-一个Android工具类用于将对象保存在一个Bundle中没有任何样板代码

    这个"Android-一个Android工具类用于将对象保存在一个Bundle中没有任何样板代码"的项目,提供了一种简洁的方式,使得开发者无需编写大量的样板代码就能实现对象的序列化和存储。这种工具类通常会封装序列化过程,...

    Android 数据传递(Intent、Bundle、Serializable、Parcelable等)

    实现Parcelable接口的类可以被高效地打包和解包,适合在内存中频繁传递大量数据或复杂对象。然而,Parcelable的代码编写相对复杂,需要手动实现writeToParcel()和describeContents()方法。 **Intent的使用场景**: ...

    bundle传递基本数据,Parcelable类型数据,Serializable类型数据

    5. 传递后的数据只存在于`Bundle`实例中,不会持久化,当`Bundle`被销毁时,数据也会丢失。 综上所述,`Bundle` 提供了丰富的数据传递功能,无论是简单的基本类型还是复杂的对象类型,都能灵活应对。开发者可以根据...

    Intent传递对象

    本篇文章将深入探讨如何在Intent中利用Bundle来传递对象。 1. **Intent的基本概念** Intent是Android中的一个类,它充当了应用程序组件之间的信使。它可以用来启动新的Activity或者Service,也可以用来在组件间...

    Android中Bundle的小例子

    在实际项目中,我们常常会遇到Parcelable接口,它允许对象高效地序列化和反序列化,这对于在`Bundle`中传递复杂的自定义对象非常有用。实现Parcelable接口需要编写一些额外的代码,但它提供了比Serializable更高的...

    Intent_Bundle_传参数

    - 尽量减少在Intent中传递大量数据,因为这可能导致内存泄漏或性能问题。考虑使用其他数据共享方式,如ViewModel、Room数据库或ContentProvider。 7. **YiMin的关联** 文件名"YiMin"可能是某种特定场景下的示例...

    testBundle

    3. 在使用Bundle传递数据时,确保接收方能够处理这些数据,否则可能会引发运行时异常。 4. 注意数据安全,避免在Bundle中传递敏感信息。 总之,Bundle在Android开发中扮演着不可或缺的角色,掌握其用法和注意事项是...

    Activity之间传递对象的Demo

    三、使用Parcelable传递对象 在发送Activity中,我们可以这样创建Intent并添加对象: ```java User user = new User("Tom", 25); Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("user...

    android bundle message

    3. 传递数据:在Activity之间传递数据时,我们通常在`Intent`对象中使用`putExtras(Bundle)`方法将Bundle附加到Intent。例如,`intent.putExtra("bundleKey", bundle)`。同样的,Fragment也可以通过`setArguments...

    TestBundle

    二是通过创建一个Bundle对象,将数据放入Bundle中,再将Bundle作为Intent的一个额外参数传递。例如: ```java Intent intent = new Intent(context, TargetActivity.class); intent.putExtra("key", "value"); // ...

    AIDL传递自定义对象

    `Parcelable`是Android系统提供的一个高效的数据序列化方式,适用于内存中的对象传输,如Intent或Binder。以下是`Person`类的一个示例: ```java public class Person implements Parcelable { public String name...

    安卓Android源码——Bundle.rar

    7. **最佳实践**:在使用Bundle时,应遵循一些最佳实践,如避免过度使用Bundle传递大量数据,因为这可能会导致内存问题;同时,对于复杂的对象,考虑使用Parcelable而非Serializable,因为前者在性能上更优。 8. **...

    Android应用源码之Bundle_Bundle.zip

    在Android应用开发中,`Bundle`是一个至关重要的类,它被广泛用于在Activity、Fragment以及Intent之间传递数据。`Bundle`本质上是一个可序列化的Key-Value存储容器,它提供了多种方法来存储各种类型的数据,如基本...

    Android应用源码之Bundle.zip

    在Android应用开发中,`Bundle`是一个至关重要的概念,它是一个可以存储各种数据类型的容器,如基本类型、数组、集合、Parcelable对象等。`Bundle`主要用于在Activity之间传递数据,或者在Fragment之间传递数据,...

    Bundle--Android-Activity.rar_android_android activity

    6. 使用Bundle最佳实践:尽量避免在Bundle中传递大量数据,因为这可能导致内存泄漏和性能问题。对于大数据量的传输,考虑使用ContentProvider、数据库或文件共享。同时,确保所有添加到Bundle的自定义对象都实现了...

Global site tag (gtag.js) - Google Analytics