Bog*_*yak 136
还有一个选项可供使用 Handler -> postDelayed
Handler().postDelayed({
//doSomethingHere()
}, 1000)
Run Code Online (Sandbox Code Playgroud)
Mat*_*aga 92
您可以使用Schedule
inline fun Timer.schedule(
delay: Long,
crossinline action: TimerTask.() -> Unit
): TimerTask (source)
Run Code Online (Sandbox Code Playgroud)
例子(感谢@Nguyen Minh Binh - 在这里找到它:http://jamie.mccrindle.org/2013/02/exploring-kotlin-standard-library-part-3.html )
import java.util.Timer
import kotlin.concurrent.schedule
Timer("SettingUp", false).schedule(500) {
doSomething()
}
Run Code Online (Sandbox Code Playgroud)
Khe*_*raj 49
Handler课程Handler().postDelayed({
TODO("Do something")
}, 2000)
Run Code Online (Sandbox Code Playgroud)
Timer课程Timer().schedule(object : TimerTask() {
override fun run() {
TODO("Do something")
}
}, 2000)
Run Code Online (Sandbox Code Playgroud)
短
Timer().schedule(timerTask {
TODO("Do something")
}, 2000)
Run Code Online (Sandbox Code Playgroud)
最短
Timer().schedule(2000) {
TODO("Do something")
}
Run Code Online (Sandbox Code Playgroud)
Executors课程Executors.newSingleThreadScheduledExecutor().schedule({
TODO("Do something")
}, 2, TimeUnit.SECONDS)
Run Code Online (Sandbox Code Playgroud)
小智 30
您必须导入以下两个库:
import java.util.*
import kotlin.concurrent.schedule
Run Code Online (Sandbox Code Playgroud)
然后以这种方式使用它:
Timer().schedule(10000){
//do something
}
Run Code Online (Sandbox Code Playgroud)
dwb*_*ito 20
如果您使用的是更新的 Android API,则 Handler 空构造函数已被弃用,您应该包含一个 Looper。你可以很容易地得到一个通过Looper.getMainLooper()。
Handler(Looper.getMainLooper()).postDelayed({
//Your code
}, 2000) //millis
Run Code Online (Sandbox Code Playgroud)
Jon*_*lms 18
您可以launch使用协程,delay然后调用该函数:
/*GlobalScope.*/launch {
delay(1000)
yourFn()
}
Run Code Online (Sandbox Code Playgroud)
如果你不在类或对象之前GlobalScope让coroutine在那里运行,否则建议CoroutineScope在周围的类中实现它,这允许在必要时取消与该作用域相关的所有协同程序.
var*_*tty 17
val timer = Timer()
timer.schedule(timerTask { nextScreen() }, 3000)
Run Code Online (Sandbox Code Playgroud)
一个简单的例子,显示3秒后的祝酒词:
fun onBtnClick() {
val handler = Handler()
handler.postDelayed({ showToast() }, 3000)
}
fun showToast(){
Toast.makeText(context, "Its toast!", Toast.LENGTH_SHORT).show()
}
Run Code Online (Sandbox Code Playgroud)
如果您正在寻找通用用法,这是我的建议:
创建一个名为的类Run:
class Run {
companion object {
fun after(delay: Long, process: () -> Unit) {
Handler().postDelayed({
process()
}, delay)
}
}
}
Run Code Online (Sandbox Code Playgroud)
像这样使用:
Run.after(1000, {
// print something useful etc.
})
Run Code Online (Sandbox Code Playgroud)
如果您在具有 viewModel 范围的片段中,您可以使用 Kotlin 协程:
myViewModel.viewModelScope.launch {
delay(2000)
// DoSomething()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86348 次 |
| 最近记录: |