美文网首页
Android使用suspendCancellableCorou

Android使用suspendCancellableCorou

作者: Ello_Orld | 来源:发表于2021-03-03 21:48 被阅读0次

    普通的回调函数:

    interface Result<T> {
        fun onSuccess(t: T)
        fun onFailed(e: Exception)
    }
    

    回调方法,模拟耗时操作

      fun longTimeMethod(result: Result<String>) {
            thread {
                Thread.sleep(5000)
                if (System.currentTimeMillis() % 10 > 6) {
                    result.onSuccess("${System.currentTimeMillis()}")
                } else {
                    result.onFailed(Exception("FAILED"))
                }
            }
        }
    

    去掉回调,转换为挂起函数:

     suspend fun getResult(): String =
            suspendCancellableCoroutine {
                longTimeMethod(object : Result<String> {
                    override fun onSuccess(t: String) {
                        if (it.isCancelled) return
                        it.resume(t)
                    }
    
                    override fun onFailed(e: Exception) {
                        it.resumeWithException(e)
                    }
    
                })
            }
    

    相关文章

      网友评论

          本文标题:Android使用suspendCancellableCorou

          本文链接:https://www.haomeiwen.com/subject/dwmcqltx.html