Kotlin Native如何实现代码延迟执行 iOS端有等效Handler.postDelayed的方案吗
Kotlin Native iOS平台等效Android
postDelayed 的实现方案 有两种常用的稳定实现方式,效果和Android Handler.postDelayed 完全一致,都可以实现在iOS主线程延迟指定时长执行代码:
方案1:桥接iOS原生GCD API(无额外依赖)
直接调用iOS系统的DispatchQueue相关API实现,不需要引入第三方依赖,适合轻量项目:
import platform.Foundation.dispatch_after import platform.Foundation.dispatch_get_main_queue import platform.darwin.NSEC_PER_SEC import kotlinx.cinterop.ExperimentalForeignApi @OptIn(ExperimentalForeignApi::class) fun postDelayed(delayMillis: Long, action: () -> Unit) { // 转换毫秒为纳秒,和GCD的时间单位对齐 val delayNanoSeconds = delayMillis * NSEC_PER_SEC / 1000 dispatch_after( `when` = dispatch_time(0, delayNanoSeconds), queue = dispatch_get_main_queue(), block = action ) } // 调用示例:延迟2秒执行 postDelayed(2000) { // 此处填写要执行的逻辑,默认运行在iOS主线程 }
方案2:使用Kotlin协程(跨平台通用)
如果项目已经引入kotlinx-coroutines库,优先用这个方案,Android、iOS两端可以共用同一套代码,不需要单独做平台适配:
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch // 调用示例:延迟2秒执行 CoroutineScope(Dispatchers.Main).launch { delay(2000) // 延迟时长,单位为毫秒 // 此处填写要执行的逻辑,默认运行在主线程 }
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

