我想在单个进程中共享活动之间的多兆字节数据结构和其他对象(指代所述数据结构)(Parcelable
是不可能的;无论如何,大部分数据都存在于C ++中)。我不仅要将任意对象发送到新活动,还要返回任意结果对象。
但是活动相互启动并通过Intents返回结果,并且Intents似乎无法包含任意对象。目前我使用static
变量作为解决方法,但它让我担心内存泄漏,虽然只打算运行应用程序的一个实例(现在),但我不禁想想如果两个会发生什么某个Activity的实例以某种方式进入Activity堆栈。
那么,SO社区,你会推荐什么样的沟通机制?
P.S。有没有人知道Android是否会生成一个进程的多个副本,例如当两个应用程序独立启动第三个应用程序时?
答案 0 :(得分:2)
我想在单个进程中的活动之间共享多兆字节数据结构和其他对象(指代所述数据结构)
我希望您真正想要的是一个集中的数据模型,您的所有活动都可以参考。
我不仅要将任意对象发送到新活动,还要返回任意结果对象。
同样,我希望您真正想要的是一个集中的数据模型,您的所有活动都可以参考。假设您希望在活动之间传递“多兆字节数据结构”,就像是说您想通过Web应用程序中的URL上的查询参数传递“多兆字节数据结构”。
目前我使用静态变量作为解决方法,但它让我担心内存泄漏,虽然只打算运行应用程序的一个实例(现在),但我不禁想想如果两个实例会发生什么相同的Activity以某种方式进入活动堆栈。
好吧,如果你真的有一个集中的数据模型(无论是通过静态数据成员还是其他方法),你就不必担心数据复制了。此外,每次通过Intent
个附加内容传递数据时,您都在制作副本。
那么,SO社区,你会推荐什么样的沟通机制?
拥有一个集中的数据模型并在Intent
附加内容中传递标识符。
是否有人知道Android是否会产生多个流程副本,例如:当两个应用程序独立启动第三个应用程序时?
默认情况下,每个应用程序都在一个进程中运行,无论是谁“启动”它们或它们“启动”了多少次。
答案 1 :(得分:0)
就像在Web服务和客户端之间传递任意对象一样,您可以序列化对象并在另一端反序列化它们,并在Intent包中传递这些对象。您可以使用XML或JSON序列化器/反序列化器来完成此操作。
编辑: 好的,在看到CommonWares评论之后,我做了一些挖掘意图和我的第一个建议,毕竟可能不是那么好。虽然它适用于较小的物体。
所以我可以想到几种选择。