2017-04-11 5751 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 
}