Understanding coroutine contexts and jobs
In this section, you will learn about coroutine contexts and jobs. Coroutines run in a coroutine context. A job is the context of the coroutine that allows you to manage the coroutine’s execution.
Coroutine contexts
Each coroutine runs in a coroutine context. A coroutine context is a collection of elements for the coroutines that specifies how the coroutine should run. A coroutine scope has a default coroutine context; if it’s empty, it will have an EmptyCoroutineContext
.
When you create a CoroutineScope
or use a coroutine builder, you can pass in a CoroutineContext
. In the previous examples, we were passing a dispatcher:
CoroutineScope(Dispatchers.IO) {
…
}
viewModelScope.launch(Dispatchers.Default) { ... }
The preceding example shows how to pass a dispatcher in the CoroutineScope
function or in the coroutine builder.
What you’re passing in these functions is a...