169 похожих чатов

Я так понимаю, что если двигаться по навигационному графу вперёд

в navigation component, то фрагменты будут все добавляться в back stack?

30 ответов

18 просмотров

Ну да, в этом и смысл. Кастомное поведение также возможно.

Иван-Чепёлкин Автор вопроса

Блин, ну в этом и проблема. Коррутины во вьюмодели не могут сдохнуть, ибо скоуп вью модели живёт пока жива вьюмодель ,а она жива пока жив фрагмент

Как это не могут? А для кого придумали job?

Иван-Чепёлкин Автор вопроса

Но мне теперь самому ручками нужно следить за жц фрагмента чтоб джобы поубивать

Для чего вам именно смерть корутин нужна?

Иван-Чепёлкин Автор вопроса

Отписка от Flow

Так Flow - Cold Stream, он работает только по collect

Иван-Чепёлкин Автор вопроса

Блин, ShareFlow

Иван-Чепёлкин Автор вопроса

Ну так коллект всегда есть пока есть вьюмодель

Ну так это же практически эквивалент LiveData, не полностью, конечно. Там же lifecycle aware можно настроить.

Иван-Чепёлкин Автор вопроса

А как настроить?

Врать не буду, сам лично с SharedFlow не работал, но на медиуме полно мануалов

Погляди в сторону KTX который добавляет lifecycleScope

Иван-Чепёлкин Автор вопроса

Lifecyclescope нужен для представления

А ты что? Про код во вью модели?

Иван-Чепёлкин Автор вопроса

Ага)

onCleared() перекрой и в нем делай cancel на скоупе нужном, отпишешься так

Иван-Чепёлкин Автор вопроса

))))) если б все так просто было. Oncleared не сработает когда я иду вверх по навигации в navigation component ибо фрагмент добавляется в бэкстек

Если всё ещё не решили проблему, то можете кратко и понятно описать что у вас и что должно быть?

Но есть нюанс. Вью модель специально сделана как отделенная от ЖЦ сущность. Если ты там хочешь подвязываться на циклы и события интерфейса -- что-то не так

Иван-Чепёлкин Автор вопроса

Да с чего это не так? Она работает как и должна. Destroy вызвался у фрагмента - вью модель сдохла. Но когда фрагмент добавили в бэкстек дестрой не вызовется и тут уже нужно завязываться на onStop чтоб сделать отписку от источников во вьюмодели.в этом она кар раз завязана на жц фрагмента

Иван-Чепёлкин Автор вопроса

Просто буду завязываться на onStop чтоб сделать отписку от источников

Зачем onStop()? Разве не подойдёт onDestroyView()?

Иван-Чепёлкин Автор вопроса

Ну или так) тоже верно

И кстати, зачем вообще от чего-то отписываться? viewLifecycleOwner же есть

Отписывать надо интерфейс. А то тебя послушать, надо вью модель от репо отписать, а репо от базы, а базу отписать от еще чего

Иван-Чепёлкин Автор вопроса

Раньше ты как в rx java делал отписку?

Не ходи вокруг, говори прямо

Не нравится такое поведение = не добавляй фрагмент в бэкстэк, зачем велосипеды) popUpTo/popUpToInclusive

Иван-Чепёлкин Автор вопроса

👍

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
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
Карта сайта