gpt4 book ai didi

java - Android 中的无限循环线程

转载 作者:行者123 更新时间:2023-12-01 22:34:57 25 4
gpt4 key购买 nike

我试图无限循环一个线程,但它只运行一次。我能找到的唯一解决方案是旧版本的 Java,它似乎不再工作了。

这是启动循环的 Activity:

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Thread growCoin = new Thread(new GrowingCoin());
growCoin.start();
}
}

处理循环的类:

public class GrowingCoin implements Runnable{
CoinTracker co = new CoinTracker();
boolean runGrowLoop = true;

public void run(){
try{
while(runGrowLoop == true){
co.copper = (int) (co.copper + (co.copper * 0.2));
MainActivity.coppertv.setText("Copper: " + co.copper);
Thread.sleep(1000);
Log.i("thread debug", "thread sleeping");
}
}
catch(Exception e){

}
}
}

我假设这与 CoinTracker 类未更新有关,因为我以前遇到过类似的问题,但如果是这种情况,我不知道如何解决问题。

提前感谢您提供任何解决方案/尝试解决问题。

编辑:

我对 LogCat 的经验很少,但我认为标签 System.err 意味着一些重要的事情,所以这是我从该标签获得的所有内容。我无法弄清楚错误消息的含义:

android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread     that created a view hierarchy can touch its views.
at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6247)
at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:902)
at android.view.ViewGroup.invalidateChild(ViewGroup.java:4637)
at android.view.View.invalidateInternal(View.java:11690)
at android.view.View.invalidate(View.java:11654)
at android.view.View.invalidate(View.java:11638)
at android.widget.TextView.checkForRelayout(TextView.java:6842)
at android.widget.TextView.setText(TextView.java:4047)
at android.widget.TextView.setText(TextView.java:3905)
at android.widget.TextView.setText(TextView.java:3880)
at me.test.first.GrowingCoin.run(GrowingCoin.java:13)
at java.lang.Thread.run(Thread.java:818)

最佳答案

在执行诸如while(runGrowLoop == true)之类的操作时要小心,它会占用大量CPU资源。您应该使用synchronized block 。

看看这里,它已经有答案了:

Android infinite loop in thread

关于java - Android 中的无限循环线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26993949/

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