https://kotlinlang.org logo
#russian
Title
# russian
d

Dmitry Khasanov

03/30/2020, 1:12 PM
добрый день! допустим есть класс Searcher выполняющий некий поиск, он предоставляет АПИ в виде suspend метода(ов) и внутри себя использует вспомогательные классы которые делают разные асинхронных операции (сеть, файлы, длительная обработка данных) используя корутины. Какие есть правила что бы все эти классы соответствовали лучшим практикам structured concurency? например, - точно нигде в Searcher и вспомогательных классах не использовать GlobalScope. это ясно - должен ли Searcher реализовывать CoroutineScope и как? этот момент не понятен, т.к. никакого своего жизненного цикла у этого класса быть не должно, как, например, у viewModelScope - обернуть основной метод класса Searcher в coroutineScope { .. } ? как я понимаю все запущенные внутри этого метода корутины корректно завершатся во всех случаях - нормально ли использовать withContext(Dispatchers.IO) в методах которые точно должны выполняться в IO потоках может что то еще?
g

gildor

04/07/2020, 11:33 PM
CoroutineScope имеет смысл только если внутри класса есть состояние которое выполняется в фоне. Но если юзкейсов для скоупа нет, то не нужно его имплеметить С coroutineScope верно Обернуть в with context нормально если код блокирующий
👍 1
3 Views