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

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

перехода с одного view на другой, создал в Application coroutinescope и юзаю его в viewmodel, с помощью этого скоупа я сохраняю данные в кеши юзаю для этого dao, вопрос следующий : при разрушении viewmodel не будет убит dao, который юзается вот этим живучим скоупом?

11 ответов

19 просмотров

Объект не может быть убит пока на него есть хотя бы одна ссылка

kostig-gig Автор вопроса

По завершении операции с dao, ссылка умрёт, когда мы будем находится на другом экране?

В ViewModel есть свой viewModelScope, если что

kostig-gig Автор вопроса

Ну, если я буду выполнять длительную операцию через viewmodelscope, то при уничтожении viewmodel, не выполнится моя операция до конца

А как вы собираетесь его контролировать, если ViewModel уничтожится?

Для таких операций подумайте об использовании WorkManager или Service

kostig-gig Автор вопроса

Так в этом и прикол, что я не собираюсь контролировать скоуп, который создаю в Application, он уничтожится тогда, когда умрет процесс

Слабо представляю кейсы, где в андроиде пришлось бы аж в application скоуп делать. Что-то вы с архитектурой перемудрили.

Бери сингл активити приложуху и бери скоуп активити и будет тебе счастье

kostig-gig Автор вопроса

Вот кейс: делаем запрос на сервер, получаем данные, после нам надо их закешировать, если мы будем кешировать данные в viewmodelscope, и наша viewmodel умрёт, то данные не успеют закешироваться, если мы создадим scope, который будет переживать смерть viewmodel, то мы сможем закешироваться эти данные, даже, если в этот момент умирает viewmodel

Моя реализация вашего кейса: внутри WorkManager делаем запрос в сеть, после этого там же начинаем кэширование. WorkManager не убъется, пока не закончит(по крайней мере шансов выжить у него больше, чем у скоупа в application). А так ещё есть варианты с сервисом(+ Foreground Service, если необходимо)

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта