Slide 28
Slide 28 text
class MainActivityViewModel(
private val contextPool: CoroutineContextProvider = ...,
): ViewModel() {
private val scope = CoroutineScope(contextPool.defaultDispatcher)
private val _viewState = MutableLiveData(MainViewState.Loading)
val viewState: LiveData = _viewState
fun loadContent() {
viewModelScope.launch {
log("viewModel launched")
scope.launch {
log("scope launched")
when(val result = doHeavyWork()) {
is Result.Success -> {...}
is Result.Failure -> {...}
}
}
}
}
...
}
CoroutineScope(context)
#6 One ViewModel, Two Scopes