除了 Handler.postDelayed() 之外,还有其他方法可以在 android 中创建时间延迟吗?
Is there any other way of creating a time delay in android other than Handler.postDelayed()?
Handler.PostDelayed() 对我来说工作不一致。 1 毫秒和 10 毫秒的延迟是相同的,我还需要在我的项目中使用更小的延迟。还有其他我可以使用的功能吗?谢谢!
你可以试试这个:
Timer t = new Timer();
t.scheduleAtFixedRate(
new TimerTask() {
@Override
public void run() {
// Your code
cancel(); // For exit to loop
}
}
},
0,
100); // Period: time in milliseconds between successive task executions.
您可以为此使用 Kotlin 协程。
import kotlinx.coroutines.*
fun main() {
GlobalScope.launch { // launch a new coroutine in background and continue
delay(1000L) // non-blocking delay for 1 second (default time unit is ms)
println("World!") // print after delay
}
println("Hello,") // main thread continues while coroutine is delayed
Thread.sleep(2000L) // block main thread for 2 seconds to keep JVM alive
}
您可以循环操作并显着减少资源消耗:
fun main() = runBlocking {
repeat(100_000) { // launch a lot of coroutines
launch {
delay(1000L)
print(".")
}
}
}
以下文章可能会有帮助:Kotlin Coroutines — Thread.sleep() vs delay
你也可以考虑CountDownTimer
Handler.PostDelayed() 对我来说工作不一致。 1 毫秒和 10 毫秒的延迟是相同的,我还需要在我的项目中使用更小的延迟。还有其他我可以使用的功能吗?谢谢!
你可以试试这个:
Timer t = new Timer();
t.scheduleAtFixedRate(
new TimerTask() {
@Override
public void run() {
// Your code
cancel(); // For exit to loop
}
}
},
0,
100); // Period: time in milliseconds between successive task executions.
您可以为此使用 Kotlin 协程。
import kotlinx.coroutines.*
fun main() {
GlobalScope.launch { // launch a new coroutine in background and continue
delay(1000L) // non-blocking delay for 1 second (default time unit is ms)
println("World!") // print after delay
}
println("Hello,") // main thread continues while coroutine is delayed
Thread.sleep(2000L) // block main thread for 2 seconds to keep JVM alive
}
您可以循环操作并显着减少资源消耗:
fun main() = runBlocking {
repeat(100_000) { // launch a lot of coroutines
launch {
delay(1000L)
print(".")
}
}
}
以下文章可能会有帮助:Kotlin Coroutines — Thread.sleep() vs delay
你也可以考虑CountDownTimer