在 Activity 之间共享 ARCore Renderable
Share ARCore Renderable between Activities
如何在活动之间共享 Sceneform Renderable?
我有一个应用程序,用户可以在其中读取有关可能具有可渲染链接的对象的信息。在 activity A 中,如果链接了可渲染对象,则单击按钮会启动 ARCore activity B 来查看可渲染对象并与之交互。
我在 activity A 中从数据库异步加载可呈现对象之前有两个原因。首先,将其保存在内存中,其次,了解是否有要显示的渲染对象。
目前,Serializable Parcelable 未由 Sceneform Renderable 实现,由于其复杂性,我无法创建自己的 class 有能力做到这一点。
我的尝试是创建一个静态 class,我将可渲染对象存储在 activity A 上的内存中,startActivity B,然后在 [=29= 中读出 Sceneform Renderable ] B 并从静态存储中删除条目 class。但问题是,是否有更好更有效的方法来在活动之间共享 Sceneform Renderable 或任何其他自定义复杂对象?
我想避免在 activity B 中等待时间,因为在 activity B 中,可渲染文件应该立即可用,因为用户必须能够查看它,因为他来自 activity A。
使用带有静态 put 和 get 方法的 singelton class 来访问私有 hashmap 就可以了。
在 put 方法中,必须将不可序列化、不可拆分的引用放入带有键的 hashmap 中,在我的例子中,是来自数据库的 id。然后,必须将要在活动之间共享的对象内的不可序列化、不可拆分的引用设置为 null。
当另一个 activity 已启动并且您要共享的对象已到达时,使用其密钥从哈希映射中检索不可序列化、不可拆分的引用,并将它们的引用(重新)设置为您想要的对象中的字段分享。
现在可以在活动之间共享具有不可序列化、不可拆分字段的自定义对象。
如何在活动之间共享 Sceneform Renderable?
我有一个应用程序,用户可以在其中读取有关可能具有可渲染链接的对象的信息。在 activity A 中,如果链接了可渲染对象,则单击按钮会启动 ARCore activity B 来查看可渲染对象并与之交互。
我在 activity A 中从数据库异步加载可呈现对象之前有两个原因。首先,将其保存在内存中,其次,了解是否有要显示的渲染对象。
目前,Serializable Parcelable 未由 Sceneform Renderable 实现,由于其复杂性,我无法创建自己的 class 有能力做到这一点。
我的尝试是创建一个静态 class,我将可渲染对象存储在 activity A 上的内存中,startActivity B,然后在 [=29= 中读出 Sceneform Renderable ] B 并从静态存储中删除条目 class。但问题是,是否有更好更有效的方法来在活动之间共享 Sceneform Renderable 或任何其他自定义复杂对象?
我想避免在 activity B 中等待时间,因为在 activity B 中,可渲染文件应该立即可用,因为用户必须能够查看它,因为他来自 activity A。
使用带有静态 put 和 get 方法的 singelton class 来访问私有 hashmap 就可以了。
在 put 方法中,必须将不可序列化、不可拆分的引用放入带有键的 hashmap 中,在我的例子中,是来自数据库的 id。然后,必须将要在活动之间共享的对象内的不可序列化、不可拆分的引用设置为 null。
当另一个 activity 已启动并且您要共享的对象已到达时,使用其密钥从哈希映射中检索不可序列化、不可拆分的引用,并将它们的引用(重新)设置为您想要的对象中的字段分享。
现在可以在活动之间共享具有不可序列化、不可拆分字段的自定义对象。