在活动之间共享可渲染的ARCore

时间:2018-08-25 09:43:35

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

如何在活动之间共享Sceneform Renderable

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

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

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

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

我想避免活动B中的等待时间,在该时间应立即提供可渲染对象,因为由于用户即将进入活动A,因此用户必须能够查看它。

1 个答案:

答案 0 :(得分:0)

使用带有静态put和get方法的singelton类来访问私有hashmap可以达到目的。

在put方法中,必须使用密钥(在本例中为数据库的ID)将不可序列化,不可拆分的引用放入哈希图中。然后,您要在活动之间共享的对象内部的不可序列化,不可拆分的引用必须设置为null。

当其他活动开始并且您要共享的对象到达时,请使用其键从哈希映射中检索不可序列化,不可拆分的引用,并将其引用重新设置为您要共享的对象中的字段。

现在,人们可以在活动之间共享带有不可序列化,不可拆分字段的自定义对象。