У меня есть приложение для сборки, используя ArFragment
из com.google.ar.sceneform.ux:sceneform-ux:1.9.0
.Я добавил навигацию, которая воссоздает отображаемые фрагменты.Но создание ArFragment
длится очень долго.
Сначала я увидел, что метод addImage()
занимает большую часть времени.В документации можно найти, что:
Примечание: этот метод занимает около 10-20 мс для входного потока байта 5 МБ.Запустите это в фоновом потоке, если это повлияет на ваше приложение.
Но когда я переместился:
augmentedImageDatabase.addImage(DEFAULT_IMAGE_NAME, augmentedImageBitmap)
в другой поток, чтобы запустить его асинхронно, ArCore прекратил распознавать или обнаруживать этот маркер.
Тогда я подумал, что, возможно, мне следует сохранить AugmentedImageDatabase
и использовать его снова.Но такой конструктор базы данных использует session
, поэтому я предполагаю, что базу данных нужно создавать заново каждый раз.Я закончил с изменением размера изображения, чтобы ускорить процесс.
После профилирования я обнаружил, что вторая медленная вещь - это создание сессии.Есть ли возможность повторно использовать сессию?Я обнаружил, что сохранить его из BaseArFragment
невозможно, потому что все методы для создания сеанса являются личными.
Должен ли я реализовать BaseArFragment
самостоятельно для повышения производительности или всегда сохранять экземпляр ArFragment в Fragment BackСтек и только накрыть его другими взглядами?Как добавить изображения во время выполнения, если addImage()
в фоновом потоке не работает?