Я сейчас задам наверное глупый вопрос, сорян, в нативе недавно,

почему все композовские библиотеки навигации предполагают аргументы в виде строк или того, что можно перевести в строку? Ну, что нам мешает допустим сначала создать ViewModel для очередного экрана со всеми параметрами любых форматов, а потом просто передать его как полностью готовый аргумент при навигации? Ну или на крайний случай, в момент перехода к очередной странице засунуть аргументы для неё в какой-нибудь статический объект, а на самой странице сразу его считать после перехода?

6 ответов

16 просмотров

Compose destinations позволяет работать с parcerable

вы описали Decompose

Через репозиторий можно что угодно передавать Репозиторий в памяти. Тоже самое будет Но вот вопрос зачем передавать объекты?

Alexey-Dubaev Автор вопроса
Foenix 00001
Через репозиторий можно что угодно передавать Репо...

так а собственно, почему бы и нет?) ну построил на одной форме какой сложный объект, что-то в него загрузил с инета, что-то из файла скачал-обработал. И чтоб это всё заново не делать и не сохранять на диск или ещё куда (ну потому что а тупо зачем), взял и передал на другую форму и дальше крути-верти. Без этого да, жить можно, но с этим эффективнее и быстрее. Прост больше интересует почему именно есть такое странное ограничение. Как бы люди выше писали связано со смертью процесса, но мне не совсем понятна взаимосвязь между смертью процесса и передачей аргументов в другой экран. Я искал какие-то описания как вообще идёт процесс восстановления навигации после смерти процесса, но чёт найти не могу, везде только описания как сохранять определённые поля из вьюмоделей и т.п. Я в сообщении выше описал свою гипотезу, но пока не получил ответ, так ли это или нет. А вот если я не хочу допустим восстанавливать стек навигации, мне допустим нужно после смерти процесса выкинуть чувака на экран авторизации, вот как это сделать? Ну или в принципе как в этот процесс вмешаться можно?

Alexey Dubaev
так а собственно, почему бы и нет?) ну построил на...

> почему именно есть такое странное ограничение В официальной navigation-compose это было сделано, чтобы уменьшить размер сохраняемых аргументов (чтобы они укладывались в лимит), и чтобы побудить разработчиков использовать персистентные источники данных. Возможно, так ещё было просто и быстрее, когда Композ уже был, а официальной навигации ещё не было. Но это вызвало много отрицательной обратной связи, и в Google её слышат. > не совсем понятна взаимосвязь между смертью процесса и передачей аргументов в другой экран Кода система обивает фоновое приложение из-за нехватки памяти другим приложениям, то потом когда то приложение снова открывается, navigation-compose (и любая другая библиотека навигации) восстанавливает старое состояние навигации. Для этого нужно сохранять все аргументы всех экранов в Bundle. Это рекомендованный UX. > если я не хочу допустим восстанавливать стек навигации Не уверен что это можно сделать со стандартной навигацией, но могу ошибаться. Можно попробовать вручную осуществлять навигацию на нужный экран со сбросом стека. Некоторые библиотеки позволяют выключать сохранение навигации, например Decompose.

Похожие вопросы

Обсуждают сегодня

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта