0

如何在活动之间共享Sceneform Renderable

我有一个应用程序,用户可以在其中读取有关可能具有可渲染链接的对象的信息。在活动 A 中,如果链接了可渲染对象,则单击按钮会启动 ARCore 活动 B 以查看可渲染对象并与之交互。

我之前从活动 A 中的数据库异步加载可渲染对象,原因有两个。首先,将其保存在内存中,其次,要知道是否有可渲染的内容要显示。

目前,Serializable Parcelable不是由Sceneform Renderable实现的,由于它的复杂性,我无法创建自己的类能够做到这一点。

我的尝试是创建一个静态类,在其中将可渲染对象存储在活动 A、startActivity B 的内存中,然后读出活动 B 中的Sceneform Renderable并从静态存储类中删除条目。但问题是,有没有更好更有效的方法在活动之间共享Sceneform Renderable或任何其他自定义复杂对象?

我想避免在活动 B 中等待可渲染的时间,因为用户必须能够查看它,因为他来自活动 A。

4

1 回答 1

0

使用带有静态 put 和 get 方法的单点类来访问私有 hashmap 就可以了。

在 put 方法中,不可序列化、不可打包的引用必须使用一个键放入 hashmap,在我的例子中,是数据库中的 id。然后,您要在活动之间共享的对象内部的不可序列化、不可打包的引用必须设置为 null。

当其他活动开始并且您要共享的对象已经到达时,使用它的密钥从他的哈希映射中检索不可序列化、不可打包的引用,并将它们的引用(重新)设置为您想要共享的对象中的字段。

现在可以在活动之间共享具有不可序列化、不可打包字段的自定义对象。

于 2018-08-30T16:14:03.607 回答