Main
A coroutine dispatcher that is confined to the Main thread operating with UI objects. Usually such dispatchers are single-threaded.
Access to this property may throw an IllegalStateException if no main dispatchers are present in the classpath.
Depending on platform and classpath, it can be mapped to different dispatchers:
On JVM it is either the Android main thread dispatcher, JavaFx, or Swing EDT dispatcher. It is chosen by the
ServiceLoader
.On JS it is equivalent to the Default dispatcher with immediate support.
On Native Darwin-based targets, it is a dispatcher backed by Darwin's main queue.
On other Native targets, it is not available.
Dispatchers.setMain
from thekotlinx-coroutines-test
artifact can replace the main dispatcher with a mock one for testing.
In order to work with the Main
dispatcher on the JVM, the following artifact should be added to the project runtime dependencies:
kotlinx-coroutines-android
— for Android Main thread dispatcherkotlinx-coroutines-javafx
— for JavaFx Application thread dispatcherkotlinx-coroutines-swing
— for Swing EDT dispatcher