有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓中意图中对象的java浅拷贝

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

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

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


共 (2) 个答案

  1. # 1 楼答案

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

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

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

  2. # 2 楼答案

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