gpt4 book ai didi

java - Android中如何在不使用线程的情况下延迟执行代码

转载 作者:行者123 更新时间:2023-12-01 18:16:16 24 4
gpt4 key购买 nike

我需要延迟某些代码的执行..假设2秒,我必须使用线程或处理程序,如下所示:

new Thread (new Runnable() {
public void run()
{
try {
Thread.sleep(2000);
} catch (InterruptedException e)
{ }

MainActivity.this.runOnUiThread(new Runnable()
{
public void run ()
{
nextPlayerTurn();
}
});
}
}).start();

这是一个好方法吗?

nextPlayerTurn() 方法调用其他使用实现 OnAnimationEnd 监听器的动画的方法(调用也需要延迟执行代码的方法)。我担心的是,每次使用上面的代码时,我都会在后台创建另一个永不消亡的线程。

所以问题是 - 一旦线程到达 runOnUiThread() 方法,无论 runOnUiThread() 中的代码需要多长时间执行,线程是否都会终止?

最佳答案

Is this a good approach?

这样做会更有效率:

someWidget.postDelayed(new Runnable()
{
public void run ()
{
nextPlayerTurn();
}
}, 2000);

这会执行 2 秒的延迟,并让您重新控制主应用程序线程。它节省了 fork 线程,然后必须使用 runOnUiThread()将控制权返回给主应用程序线程。在这里,someWidget是你的用户界面中的一些小部件——任何都可以。

My concern is that each time I use the code above, I'm creating another thread in the background that never dies.

不,当 run() 时,线程将会消失。 Runnable的您正在使用 Thread结束。

does the thread die once it gets to the runOnUiThread() method, no matter how long it takes for the code within runOnUiThread() to execute?

我将其表述为“线程在调用 runOnUiThread() 后终止,但 runOnUiThread() 是异步的,并且在后台线程上花费的时间很少”。

关于java - Android中如何在不使用线程的情况下延迟执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29335539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com