시배's Android

Kotlin Coroutines Deep Dive | 13장. 코루틴 스코프 만들기 본문

Book/Kotlin Coroutines Deep Dive

Kotlin Coroutines Deep Dive | 13장. 코루틴 스코프 만들기

si8ae 2024. 2. 5. 22:41

CoroutineScope 팩토리 함수

  • CoroutineScope는 coroutineContext를 유일한 프로퍼티로 가지고 있는 인터페이스입니다.
  • CoroutineScope를 구현한 클래스에서 cancel이나 ensureActive 같은 다른 CoroutineScope의 메서드를 직접 호출하면 문제가 발생할 수 있습니다.
  • 코루틴 스코프 인스턴스를 프로퍼티로 가지고 있다가 코루틴 빌더를 호출할 때 사용하는 방법이 선호됩니다.
  • 코루틴 스코프 객체를 만드는 가장 쉬운 방법은 CoroutineScope 팩토리 함수를 사용하는 것입니다.
  • 이 함수는 컨텍스트를 넘겨 받아 스코프를 만듭니다.

안드로이드에서 스코프 만들기

  • BaseViewModel에서 스코프를 만들면, 모든 뷰 모델에서 쓰일 스코프를 단 한번으로 정의합니다.
  • 따라서 MainViewModel에서는 BaseViewModel의 scope 프로퍼티를 사용하기만 하면 됩니다.
  • 메인 스레드가 많은 수의 함수를 호출해야 하므로 기본 디스패처를 Dispatchers.Main으로 정하는 것이 가장 좋습니다.
  • 스코프를 취소가능하게 만들기 위하여 onDestroy 메소드나 onCleared에서 취소하도록 합니다.
  • 전체 스코프 대신 스코프가 가지고 있는 자식 코루틴만 취소하는 것이 더 좋은 방법입니다.
  • 해당 스코프에서 시작된 각각의 코루틴이 독립적으로 작동해야 할 필요도 있습니다. (SupervisorJob)