Scope와 Context
Scope
- Context만을 가지는 인터페이스.
- Structured Concurrency를 지원한다.
Context
- Map과 유사한 구조.
- Job, Dispatcher, ExceptionHandler, Name 등 Coroutine의 다양한 요소를 포함한다.
ViewModelScope
- ViewModel에 의해 제공되는 Scope.
- ViewModel의 Lifecycle과 연동된다(onCleared() 호출시 취소된다).
- SupervisorJob1을 가진다.
- Dispatcher.Main.immediate을 사용한다.
LifecycleScope
- LifecycleOwner의 Lifecycle과 연결된다.
- Activity, Fragment와 연결할 경우 화면 회전과 같은 Configuration 변경 시에 취소된다.
1SupervisorJob: 자식 코루틴이 발생시킨 예외를 전파하지 않는다.