Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

is there any difference between runOnUiThread and CoroutineScope(Dispatchers.Main) in Kotlin Android

I don't know is there any difference between CoroutineScope(Dispatchers.Main).launch and runOnUiThread, I think both will run on Main thread.

but still confusion is any difference there.?

Thanks.

like image 507
Dev007 Avatar asked Sep 03 '25 06:09

Dev007


2 Answers

Firstly, you can call runOnUiThread only in the context of Activity.

Secondly, you cannot call suspend functions from runOnUiThread, while you can do it in CoroutineScope(Dispatchers.Main).launch block.

Thirdly, runOnUiThread checks if the current ui thread is busy with other operations, if it is, the task is posted to an activity handler and will be executed when its turn will come.

like image 108
Steyrix Avatar answered Sep 04 '25 20:09

Steyrix


They're different things using different technologies, and really it comes down to whether you're already using a coroutine or not. If so, just switch to the Main dispatcher when your code needs to be on the main thread. If you're not using coroutines, and you're explicitly using another thread, then you can use runOnUiThread to run some code on the main one. If you're not using coroutines or threads, then you don't need to call runOnUiThread at all!

There's nothing stopping you from using runOnUiThread from inside a coroutine - but it's not really the right tool for the job, you're stepping outside of coroutine handling unnecessarily. Plus like Steyrix says, you need access to something like an Activity to do it, which could mean holding a reference to one in a long-running coroutine when it should be garbage collected.

There are lots of other ways to get back on the main thread too, e.g. posting Runnables to a Handler (or through a View), or the postValue methods on LiveData. You don't have to switch dispatcher if there's something more concise and convenient available, it all depends on the situation

like image 29
cactustictacs Avatar answered Sep 04 '25 19:09

cactustictacs