fun testTimeout(timeMillis:Long,sleepTime :Long){
val scope = MainScope()
val ceh = CoroutineExceptionHandler { _, throwable ->
when(throwable){
is CancellationException ->{
Log.e("testTimeout"," CancellationException ")
}
else -> {
Log.e("testTimeout","throwable${throwable.message}")
}
}
}
scope.launch(ceh) {
withContext(Dispatchers.IO){
val s = withTimeoutOrNull(timeMillis){
return@withTimeoutOrNull suspendCancellableCoroutine<Boolean> {continuation ->
Log.e("suspendCancellableCoroutine"," 1 ")
SystemClock.sleep(sleepTime)
if (continuation.isActive)
continuation.resume(true)
else
continuation.cancel()
Log.e("suspendCancellableCoroutine"," 2 ")
}
}
when(s){
null ->{
Log.e(MainActivity.TAG,"超时了!")
}
true ->{Log.e(MainActivity.TAG,"没超时 true")}
else ->{Log.e(MainActivity.TAG,"超时? else ")}
}
}
}
}
协程-超时
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 什么是协程?项目中的需求特别是复杂的需求并不是单一任务的,可能是一个接一个任务组成的,特别是下一个任务需要上一个任...
- 目录 kotlin之协程(一),线程,进程,协程,协程可以替换线程吗?[https://www.jianshu.c...
- 协程一:Kotlin 协程 (一)[https://mp.weixin.qq.com/s?__biz=Mzg3NT...