How to call a function after delay in Kotlin?
作为标题,在
也可以选择使用
1 2 3 | Handler().postDelayed({ //doSomethingHere() }, 1000) |
你可以使用时间表
1 2 3 4 | inline fun Timer.schedule( delay: Long, crossinline action: TimerTask.() -> Unit ): TimerTask (source) |
示例(感谢@nguyen minh-binh-在这里找到它:http://jamie.mccrindle.org/2013/02/exploration-kotlin-standard-library-part-3.html)
1 2 3 | Timer("SettingUp", false).schedule(500) { doSomething() } |
您必须导入以下两个库:
1 2 | import java.util.* import kotlin.concurrent.schedule |
之后用这种方式:
1 2 3 | Timer().schedule(10000){ //do something } |
多种方式1。使用
1 2 3 | Handler().postDelayed({ TODO("Do something") }, 2000) |
2。使用
1 2 3 4 5 | Timer().schedule(object : TimerTask() { override fun run() { TODO("Do something") } }, 2000) |
更短的
1 2 3 | Timer().schedule(timerTask { TODO("Do something") }, 2000) |
最短的
1 2 3 | Timer().schedule(2000) { TODO("Do something") } |
三.使用
1 2 3 | Executors.newSingleThreadScheduledExecutor().schedule({ TODO("Do something") }, 2, TimeUnit.SECONDS) |
1 2 | val timer = Timer() timer.schedule(timerTask { nextScreen() }, 3000) |
您可以使用
1 2 3 4 | /*GlobalScope.*/launch { delay(1000) yourFn() } |
如果您不在类或对象的范围内,请预先准备好
一个简单的例子,在3秒钟后显示一个祝酒词:
1 2 3 4 5 6 7 8 | fun onBtnClick() { val handler = Handler() handler.postDelayed({ showToast() }, 3000) } fun showToast(){ Toast.makeText(context,"Its toast!", Toast.LENGTH_SHORT).show() } |
如果您正在寻找通用用法,以下是我的建议:
创建一个名为EDCOX1的类1
1 2 3 4 5 6 7 8 9 | class Run { companion object { fun after(delay: Long, process: () -> Unit) { Handler().postDelayed({ process() }, delay) } } } |
像这样使用:
1 2 3 | Run.after(1000, { // print something useful etc. }) |