Junior — Middle
Can you explain what CoroutineScope is and why it is needed in Kotlin?
sobes.tech AI
Answer from AI
CoroutineScope in Kotlin is a scope for coroutines that manages their lifecycle. It is used to launch coroutines and control their execution, cancellation, and completion.
Main tasks of CoroutineScope:
- Defines the context in which coroutines are launched (e.g., thread dispatcher).
- Allows cancelling all coroutines launched in this scope with a single call.
- Helps avoid memory leaks by tying coroutines to the lifecycle of a component (e.g., Activity or ViewModel).
Example in Android:
class MyViewModel : ViewModel(), CoroutineScope {
private val job = Job()
override val coroutineContext = Dispatchers.Main + job
fun loadData() {
launch {
// coroutine runs on Main thread
val data = fetchData()
// update UI
}
}
override fun onCleared() {
super.onCleared()
job.cancel() // cancel all coroutines on ViewModel destruction
}
}