La fonction Suspend ne doit être appelée qu'à partir de coroutine. Cela signifie que vous devez utiliser un constructeur de coroutine, par exemple launch
. Par example:
class Activity : AppCompatActivity(), CoroutineScope {
private var job: Job = Job()
override val coroutineContext: CoroutineContext
get() = Dispatchers.Main + job
override fun onDestroy() {
super.onDestroy()
job.cancel()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
launch {
val result = callGetApi()
onResult(result) // onResult is called on the main thread
}
}
suspend fun callGetApi(): String {...}
fun onResult(result: String) {...}
}
Pour utiliser Dispatchers.Main
dans Android, ajoutez une dépendance au fichier build.gradle
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.0.1'