【问题标题】:Share ARCore Renderable between Activities在活动之间共享 ARCore Renderable
【发布时间】:2019-01-31 14:44:56
【问题描述】:

如何在活动之间共享Sceneform Renderable

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

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

目前,Serializable Parcelable 没有由 Sceneform Renderable 实现,并且由于其复杂性,我无法创建自己的类能够做到这一点。

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

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

【问题讨论】:

    标签: android-activity share arcore custom-object sceneform


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-29
      • 2017-10-25
      • 2014-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多