Совместное использование ARCore Renderable между действиями

Как поделиться визуализируемой сценой между видами деятельности?

У меня есть приложение, в котором пользователь может читать информацию об объекте, который, вероятно, связан с рендерингом. В действии A, если рендеринг связан, щелчок по кнопке запускает действие ARCore B для просмотра и взаимодействия с рендерингом.

Я загружаю визуализируемый объект перед асинхронным запуском из базы данных в действии A по двум причинам. Во-первых, чтобы он был в памяти, а во-вторых, чтобы знать, есть ли рендеринг, который нужно показать.

Прямо сейчас Serializable Parcelable не поддерживаются Sceneform Renderable, и из-за его сложности я не могу создать собственный класс, способный делать это.

Я бы попробовал создать статический класс, в котором я сохраняю визуализируемый объект в памяти для действия A, startActivity B, а затем считываю Sceneform Renderable в действии B и удалите запись из статического класса хранилища. Но вопрос в том, есть ли более эффективные способы поделиться Sceneform Renderable или любой другой настраиваемый сложный объект между действиями?

Я хочу избежать времени ожидания в действии B, когда рендеринг должен быть мгновенно доступен, потому что пользователь должен иметь возможность просматривать его, поскольку он переходит из действия A.


person ManuelTS    schedule 25.08.2018    source источник


Ответы (1)


Использование класса singleton со статическими методами put и get для доступа к частной хэш-карте делает свое дело.

В методе put несериализуемые, неразборчивые ссылки должны быть помещены в хэш-карту с ключом, в моем случае - с идентификатором из базы данных. Затем для несериализуемых, неупорядоченных ссылок внутри объекта, которые вы хотите использовать между действиями, необходимо установить значение NULL.

Когда другое действие началось и ваш объект для совместного использования прибыл, используйте его ключ для извлечения несериализуемых, не подлежащих дроблению ссылок из хэш-карты и (пере) установите их ссылки в качестве полей в объекте, которым вы хотите поделиться.

Теперь можно обмениваться настраиваемыми объектами с несериализуемыми, неразделимыми полями между действиями.

person ManuelTS    schedule 30.08.2018