Java android中意图中对象的浅拷贝

Java android中意图中对象的浅拷贝,java,android,android-activity,parcelable,shallow-copy,Java,Android,Android Activity,Parcelable,Shallow Copy,我有几个对象要通过意图传递给其他活动。但是,它们只需要是另一个对象的浅拷贝,因为它们只会被读取(即使它们会被修改,我也希望它们在原始活动中被修改),所以将对象设置为可序列化对象没有任何意义,因为对象中的字段并非都是可序列化的,我甚至做不到 而且,让它可以打包似乎也会遇到同样的问题。当然,看起来我可以在其中添加一些字段作为活动对象,但我不能使整个内容只是一个浅拷贝 那么,是否有任何方法可以在意图中创建对象的浅层副本,或者有任何其他方法可以将数据的浅层副本传递给另一个活动,就像在java中传递参数一

我有几个对象要通过意图传递给其他活动。但是,它们只需要是另一个对象的浅拷贝,因为它们只会被读取(即使它们会被修改,我也希望它们在原始活动中被修改),所以将对象设置为可序列化对象没有任何意义,因为对象中的字段并非都是可序列化的,我甚至做不到

而且,让它可以打包似乎也会遇到同样的问题。当然,看起来我可以在其中添加一些字段作为活动对象,但我不能使整个内容只是一个浅拷贝


那么,是否有任何方法可以在意图中创建对象的浅层副本,或者有任何其他方法可以将数据的浅层副本传递给另一个活动,就像在java中传递参数一样?谢谢。

当您发送意向时,必须跨流程边界封送该意向及其相关的所有数据。发生这种情况的唯一方法是,如果对象是可包裹的

但是,如果发送新意图的代码与意图启动的活动处于相同的过程中,则可以执行类似于创建静态映射的操作来保存要发送到新活动的数据,然后在意图中传递该数据的密钥,新活动可以使用它从地图中查找数据


然而,我对这种类型的方法唯一关心的是,您可能发送一个意图,然后流程在新活动开始之前终止。然后为新的意图重新启动该过程,但随后存储在映射中的数据显然消失了。我想这可能是一种非常罕见的情况。

JesusFreke是正确的,您不能通过意图将引用(指针)传递给对象。意图是指序列化的数据,而不是对该数据的引用。但是,我建议不要使用静态映射技术,因为它通常是内存泄漏的来源。相反,我建议您创建一个android.app.Application的子类,并使用它存储对您需要在活动间共享的任何数据结构的引用。

好的,谢谢。最后,我传入了对象的ID,并从数据库中重新查询它。谢谢你提供的有用信息。遗憾的是,没有(稳定的)方法来传递指针。