gpt4 book ai didi

Android runOnUiThread 不执行

转载 作者:行者123 更新时间:2023-11-29 01:15:40 25 4
gpt4 key购买 nike

我有这个问题。我正在尝试从另一个线程更新我的 TextView 但它不允许我这样做。

我尝试了很多不同的解决方案,但似乎都没有帮助。在我的 while 循环代码中,一直打印“Started new loop”,但它不会从 runOnUiThread 继续。

谁能帮我弄清楚如何从另一个线程更新 TextView

 //second thread
protected void startKakkosThread() {
Thread t2 = new Thread() {
public void run() {
while (true) {
System.out.println("Started new loop");
runOnUiThread(new Runnable() {
@Override
public void run() {
try {
if(rullaavaNumero >= 0) {
rullaavaNumero--;
System.out.println(rullaavaNumero);
pelaajanPisteetTeksi.setText("" + rullaavaNumero);
sleep(1000);
}else{
rullaavaNumero = 9;
System.out.println(rullaavaNumero);
pelaajanPisteetTeksi.setText("" + rullaavaNumero);
sleep(1000);
}
}catch (InterruptedException e){
e.printStackTrace();
}
}
});
}
}
};
t2.start();
}

最佳答案

这是一个快速解决方法,您有一个无限循环,其运行速度比线程有机会(时间)启动的速度快。因此,即使这样,您也可以使用 if 语句在线程中进行 sleep ,如果线程从未启动,则 sleep 无效。

并且您在 Thread 中的 sleep 不会像这样工作。您想要延迟无限 while 循环,因此您需要将 sleep on 移出 while 循环中的线程。

仍然可以通过在其中添加额外的 sleep 来延迟您的线程,但这一切都取决于您想要实现的目标。

您的最终代码如下所示:

protected void startKakkosThread() {
Thread t2 = new Thread() {
public void run() {
while (true) {
System.out.println("Started new loop");
runOnUiThread(new Runnable() {
@Override
public void run() {
if (rullaavaNumero >= 0) {
rullaavaNumero--;
System.out.println(rullaavaNumero);
pelaajanPisteetTeksi.setText("" + rullaavaNumero);
// no need for sleep here
// sleep(1000);
} else {
rullaavaNumero = 9;
System.out.println(rullaavaNumero);
pelaajanPisteetTeksi.setText("" + rullaavaNumero);
// no need for sleep here
// sleep(1000);
}
}
});

// add this part
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
t2.start();
}

我已经对其进行了测试并且它有效,您也可以按照@cricket 的建议进行操作。

我看到了另一个问题,这不是您问题的一部分,但值得一提。我假设您想从 9 计数到 0,如果是这种情况,您需要通过删除 = 来更正以下行,否则您会得到计数到 -1,因此您的代码行将如下所示:

if(rullaavaNumero > 0) {... 

关于Android runOnUiThread 不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39860558/

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