Доля ARCore Renderable между действиями
Как я могу разделить Sceneform Renderable между действиями?
У меня есть приложение, где пользователь может прочитать информацию об объекте, который, вероятно, связан с визуализируемым. В действии A, если рендеринг связан, щелчок по кнопке запускает действие B ARCore для просмотра и взаимодействия с рендерингом.
Я загружаю рендеринг перед асинхронно из базы данных в действии А по двум причинам. Во-первых, чтобы иметь это в памяти, а во-вторых, чтобы узнать, есть ли рендеринг, чтобы показать.
Прямо сейчас, Serializable Parcelable не реализован Sceneform Renderable, и из-за его сложности я не могу создать собственный класс, способный сделать это.
Моя попытка состояла бы в создании статического класса, в котором я сохраняю визуализируемый объект в памяти для действия A, startActivity B, а затем считываю визуализируемый объект Sceneform в упражнении B и удаляю запись из класса статического хранилища. Но вопрос в том, существуют ли более эффективные способы совместного использования Sceneform Renderable или любого другого нестандартного сложного объекта между действиями?
Я хочу избегать времени ожидания в действии B, где визуализируемый объект должен быть мгновенно доступен, потому что пользователь должен иметь возможность просматривать его, потому что он прибывает из действия A.
1 ответ
Использование класса singelton со статическими методами put и get для доступа к частному hashmap делает свое дело.
В методе put несериализуемые, неразборчивые ссылки должны быть помещены в хэш-карту с ключом, в моем случае, с идентификатором из базы данных. Тогда непериализуемые, неразборчивые ссылки внутри объекта, которым вы хотите поделиться между действиями, должны быть установлены в нуль.
Когда другое действие началось, и ваш объект для совместного использования прибыл, используйте его ключ для извлечения не сериализуемых, не подлежащих обмену ссылок из хэш-карты и (пере) установки их ссылок как полей в объекте, которым вы хотите поделиться.
Теперь можно делиться пользовательскими объектами с не сериализуемыми, неразборчивыми полями между действиями.