android - kotlin协程耗时超过一定时间如何取消?

标签 android kotlin

如果 kotlin 协程花费的时间超过一定时间,我想取消它。

这就是我正在做的事情:

    GlobalScope.launch(Dispatchers.Main) {
        val userOne = async(Dispatchers.IO) { Page_Load_Times() }.await()

        Log.d("Tag", "Long Running task: $userOne")
    }


suspend fun Page_Load_Times(): String? {
    val startTime: Long = 0
    var endTime: Long = 0

    delay(5000) // if it is greater a certain time, eg 1000, I want to cancel the thread and return 

    return "Hey there"

}

如果kotlin协程运行时间超过一定时间,如何取消?

最佳答案

有内置的暂停函数: withTimeoutwithTimeoutOrNull .

只需在指定的超时时间内调用它:

GlobalScope.launch(Dispatchers.Main) {
    val userOne = withContext(Dispatchers.IO) {
        withTimeoutOrNull(5000) { Page_Load_Times() }
    }

    Log.d("Tag", "Long Running task: $userOne")
}

如果超时,您的userOne将变为null

关于android - kotlin协程耗时超过一定时间如何取消?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64157169/

相关文章:

android - 使用 kapt Android Studio 进行注解处理

android - 重复类 androidx.appcompat :appcompat

Kotlin String.toBoolean 替换

Android 改造和 GSON : JSON response returns object or string as property value

安卓 : MPAndroidChart how to remove values on right side in chart?

android - 如何从 Kotlin 中的 MultiSelectSpinner 获取逗号分隔的项目 ID

android 使用状态码 10002 连接到 gamecenter

Android:动态添加按钮到布局

java 到 kotlin 类型不匹配

gradle - 在Kotlin构建文件中执行注册的任务