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