gpt4 book ai didi

android - Bundle.putParcelable/getParcelable 对返回相同的对象实例

转载 作者:搜寻专家 更新时间:2023-11-01 08:43:39 24 4
gpt4 key购买 nike

我花了很长时间调试一个在我的应用程序中表现怪异的可打包对象。幸运的是,最终我注意到,通过 Bundle 发送的对象(在本例中为 Fragment 参数)可能与我传递给它的对象完全相同。

考虑以下代码 fragment ,其中 r2 不是我预期的副本,而是同一个对象 r

Rect r = new Rect();
Log.d("r", r.toString()); // Rect(0, 0 - 0, 0)
Bundle bundle = new Bundle();
bundle.putParcelable("KEY", r);
Rect r2 = bundle.getParcelable("KEY");
r2.set(100, 100, 100, 100);
Log.d("r", r.toString()); // Rect(100, 100 - 100, 100)
Log.d("r2", r2.toString()); // Rect(100, 100 - 100, 100)

现在的问题是在某处是否有关于此行为的文档?我在 Nexus 5 上的 Android 5.1 上遇到了这种行为,并且很想知道这是否已经存在于 API 1 中,以及在哪些情况下它会通过创建者返回一个副本。

我确定有,但我找不到正确的搜索关键字。

最佳答案

你应该知道你放入包中的数据是通过引用传递的,而不是对象的副本,所以在同一个类中,这将是同一个对象。另一方面(在您的 fragment 中,在创建它时)很难,对象被反序列化(解码),因此这会复制您的原始数据。

关于android - Bundle.putParcelable/getParcelable 对返回相同的对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30439108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com