Search code examples
kotlinx.coroutines

kotlin coroutine - what is default scope?


How does coroutines default scope work if i do not specify anything. lets take a look at this example:

class MyAppCompatActivity:AppCompatActivity{
fun getContact() {
        GlobalScope.launch {
            val contact = contacts.getContact() // suspended function
            withContext(Dispatchers.Default) {
               phoneContact.value = contact }
        }
    }
}

which simply updates the UI when a contact is retrieved. this is added to the global scope of so the coroutine life span can be that of the entire application.

but lets do the same thing again without a globalScope:

class MyAppCompatActivity:AppCompatActivity{
fun getContact() {
        launch {
            val contact = contacts.getContact() // suspended function
            withContext(Dispatchers.Default) {
               phoneContact.value = contact }
        }
    }
}

what is the lifespan of getContact now that i have removed the globalScope ? is it tied to the MyAppCompatActivity scope ?


Solution

  • Your code will fail to compile because launch must be called on a CoroutineScope object. This object specifies the lifespan of the coroutine. Since your activity does not implement a scope it will fail to compile or call a completely unrelated launch function.