一,两种超时处理方式
使用 withTimeout 或 withTimeoutOrNull 可以指定 Job 任务的超时时间。两者的区别在于:
- withTimeout 函数会在超时后抛出一个超时异常 TimeoutCancellationException
- withTimeoutOrNull 函数会在超时后返回一个 null 值
二,withTimeout例子,需捕捉异常
代码:
//处理按钮点击事件binding.button1.setOnClickListener {runBlocking {try {withTimeout(500) {launch {println("delay begin")delay(1000)println("delay end")}}} catch (e: TimeoutCancellationException) {e.printStackTrace()}}}
运行结果:

三,withTimeoutOrNull例子,无需捕捉异常
代码:
//处理按钮点击事件binding.button2.setOnClickListener {runBlocking {val result = withTimeoutOrNull(500) {launch {println("delay begin")delay(1000)println("delay end")}}println("result: $result")}}
运行结果:
![]()