'How to start a coroutine on main thread without using GlobalScope?

Whenever I want to start a coroutine on a main thread,

fun main(args: Array<String>) {
    GlobalScope.launch {
        suspededFunction()
    }
}

suspend fun suspededFunction() {
    delay(5000L) //heavy operation
}

GlobalScope is highlighted, and always taunt that its usage is delicate and require care.

What delicacies are involved with GlobalScope, and importantly how can I start a coroutine without using GlobalScope?



Solution 1:[1]

Kotlin already created some scope. you can use it according to your situation. and you also create your own scope. but I suggest in the beginning it is better to use that already created check official documentation https://developer.android.com/topic/libraries/architecture/coroutines

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    viewBinding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(viewBinding.root)

    lifecycleScope.launch {
        //for activity
    }


}



  //for viewmodel
suspend fun abc() = viewModelScope.launch { 
     
    }

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1