таких AndroidView внутри Pager'а. И вот при уходе с экрана с этим Pager'ом такое ощущение, что сохранённый стейт не очищается из фрагмента (композ работает внутри фрагмента).
Получается, что таким образом в bundle все время есть сохранённый стейт, из за которого я получаю ошибку TransactionTooLargeException. Я на 100% не уверен, что дело именно в AndroidView, но на всякий случай спрашиваю у знатоков.
Я пришёл к этой идее, когда установил либу TooLargeTool. Она показывает, какие компоненты сколько данных хранят в bundle'ах у активити и во фрагментах.
Так вот пока я захожу на экран с этими AndroidView, потом скрываю прогу, переходя на лаунчер. Вижу логи TooLargeTool, где android:view_registry_state содержит 404 KB данных. Ок, захожу в прогу, нажимаю кнопку назад для ухода с того экрана, снова скрываю прогу, все те же цифры в android:view_registry_state.
Собственно, вопрос, AndroidView связан с этим android:view_registry_state и если да, то как очистить его стэйт после ухода с экрана?
попробуйте проставлять setViewCompositionStrategy(DisposeOnLifecycleDestroyed(viewLifecycleOwner)) на каждом ComposeView, который используется внутри фрагментов
Андрей, так а фрагмент не destroy'ится, он все время работает, пока я не переверну экран. Кнопка назад просто меняет экраны (decompose использую). Сейчас попробовал вместо webview поставить тупо Text(), все равно данные не очищаются. Так что дело не в AndroidView. Попробую локализовать проблему.
Дело не в композе точно. Я, видимо, как то неправильно использую decompose. Разбираюсь дальше.
Обсуждают сегодня