Size: a a a

2021 June 24

FG

Fuad Garayev in Kotlin Start
ну имеется переменная ,и у нее я вызываю методы типо play или release,так что - да,переменная меняет состояние.а что делать если обжект опасно?
источник

BP

Bogdan Panchenko in Kotlin Start
val job = scope.launch - вот тут да, отмена только этого launch
источник

В

Виктор in Kotlin Start
То есть все же верно? Контекст ведь у всех одинаково созданных скоупов будет один? Я про scope.cancel()
источник

BP

Bogdan Panchenko in Kotlin Start
Что верно ? Обмена скоура и джобы - одно и тоже
источник

В

Виктор in Kotlin Start
источник

В

Виктор in Kotlin Start
В видео по корутинам говорилось, что отмена скоупа убьет все остальные с этим контекстом и диспетчером
источник

BP

Bogdan Panchenko in Kotlin Start
Да все верно, но тоже верно и для job который передали в качестве контекста. Если вам нужно проверять активность скоупа или его отменить - то job можно не сохранять
источник

BP

Bogdan Panchenko in Kotlin Start
Вообще - да, так делать не стоит. Нужно посмотреть как люди прикидывают общее состояние
источник

В

Виктор in Kotlin Start
Короче говоря.
1. Скоуп больше нигде не используется - дополнительный джоб в контексте не нужен, отменяем скоуп.
2. Скоуп используется где-то ещё - делаем дополнительный джоб и отменяем только используя его.
Верно же?
источник

BP

Bogdan Panchenko in Kotlin Start
Так давайте разберем.


val scopeJob = Job()
val scope = CorouutineScope (scopeJob)
val job1 = scope.launch{}
val job2 = scope.launch{}

// Отменяем только job1, скоуп жив
job1.cancel()
// Закрывает скоуп и останавливает job1 и job2
scopeJob.cancel()


scope.cancel() == scopeJob.cancel(), время жизни скоупа - живой хоть один job
источник

В

Виктор in Kotlin Start
Да, именно эту зависимость одного от другого в одну сторону и независимость в другую я и имел ввиду.
источник

В

Виктор in Kotlin Start
источник

FG

Fuad Garayev in Kotlin Start
большое спасибо,джоб жив пока жив курутин скоуп,правильно я понял?)
источник

BP

Bogdan Panchenko in Kotlin Start
В его случае имея ссылку на скоуп также можно отметить, job хранить не обязательно)

Вот про что я)
источник

В

Виктор in Kotlin Start
Ага. Просто в его примере, видимо, был задел на использование скоупа во многих местах. У меня в сервисе так, причем с таким же неймингом от Гугла.
источник

FG

Fuad Garayev in Kotlin Start
я правильно понял,если у меня имеется два джоба как вы показали в примере высше,я могу к примеру в одном джобе кинуть запрос инет,а в другом джобе работать с базой данных?
источник

BP

Bogdan Panchenko in Kotlin Start
А, ну может человек по номерам Гугла делал)
источник

FG

Fuad Garayev in Kotlin Start
источник

BP

Bogdan Panchenko in Kotlin Start
Да, но если нужен результат то нужно вместо launch  используйте async
источник

BP

Bogdan Panchenko in Kotlin Start
Вот у вас используется @Inject, это какой-то DI, через него и делайте ваш сингелтон
источник