2017-04-11 5747 views

回答

15

您可以使用Schedule

inline fun Timer.schedule(
    delay: Long, 
    crossinline action: TimerTask.() -> Unit 
): TimerTask (source) 
+5

谢谢!超级简单。在这里找到一个例子http://jamie.mccrindle.org/2013/02/exploring-kotlin-standard-library-part-3.html 'Timer(“SettingUp”,false).schedule(500){doSomething() }' –

+1

这不会编译 –

+0

它编译时,如果你添加这两个导入: import java.util.Timer和import kotlin.concurrent.schedule – Customizer

9

也有使用Handler -> postDelayed

Handler().postDelayed({ 
        //doSomethingHere() 
       }, 1000) 
+3

请补充说它只适用于android,因为这个问题需要一个通用的kotlin方法(虽然它的确有Android标签) –

+0

从你这边来看,这并不具有建设性。因此当用户搜索android标签时可能会认为这是错误的答案。 –

6
val timer = Timer() 
timer.schedule(timerTask { nextScreen() }, 3000) 
+0

你能解释我为什么我需要写“timerTask”而不是大括号? –

+2

@HugoCastelani:你不需要.. –

3

一个简单的例子3秒后,显示敬酒一个选项:

fun onBtnClick() { 
    val handler = Handler() 
    handler.postDelayed({ showToast() }, 3000) 
} 

fun showToast(){ 
    Toast.makeText(context, "Its toast!", Toast.LENGTH_SHORT).show() 
} 
1

你必须导入以下两个库:

import java.util.* 
import kotlin.concurrent.schedule 

后以这种方式使用它:

Timer().schedule(10000){ 
    //do something 
}