gpt4 book ai didi

java - ScheduleAtFixedRate 使整个应用程序崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 13:57:35 25 4
gpt4 key购买 nike

我正在编写一个应用程序,它生成随机数并在 Android 屏幕上显示它们(一个接一个)。这是 Activity java fragment 。

public class Scada extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scada);
Timer timer1= new Timer();
timer1.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
TextView myTextView = (TextView) findViewById(R.id.Flow1);
random flow1=new random();
myTextView.setText("Flow: " + flow1.random() + " m" + Html.fromHtml("<sup><small>" + "3" + "</small></sup>"));
}
},0,9000);

这是随机类(但我认为看起来不错)

public class random {

public int random (){
Random gen1 = new Random();
int flow1 = gen1.nextInt(100);
return flow1;}
}

当我尝试使用Timer时,应用程序崩溃了。原因是什么?预先感谢您。

最佳答案

Timer 在后台线程上运行,并且不允许您在后台线程上更改 UI。如果您的目标只是每 9 秒更改一次 TextView 的内容,则可以使用 Handler。例如

final Runnable r = new Runnable() {
public void run() {
TextView myTextView = (TextView) findViewById(R.id.Flow1);
random flow1=new random();
myTextView.setText("Flow: " + flow1.random() + " m" + Html.fromHtml("<sup><small>" + "3" + "</small></sup>"));
myTextView.postDelayed(this, 9000);
}
};

在 onCreate 中,做同样的事情:

TextView myTextView = (TextView) findViewById(R.id.Flow1);
myTextView.postDelayed(r, 9000);

关于java - ScheduleAtFixedRate 使整个应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29668869/

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