kotlin: Job 超时处理

一,两种超时处理方式

使用 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()
                }
            }
        }

运行结果:

image

三,withTimeoutOrNull例子,无需捕捉异常

代码:

        //处理按钮点击事件
        binding.button2.setOnClickListener {
            runBlocking {
                val result = withTimeoutOrNull(500) {
                    launch {
                        println("delay begin")
                        delay(1000)
                        println("delay end")
                    }
                }
                println("result: $result")
            }
        }

运行结果:

image

posted @ 2025-08-09 13:41  刘宏缔的架构森林  阅读(14)  评论(0)    收藏  举报