我正在编写应用程序,它会生成随机数并在Android屏幕上显示它们(一个接一个)。这是活动java片段。
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
app崩溃时。原因是什么?提前谢谢。
答案 0 :(得分:0)
Timer在后台线程上运行,不允许在后台线程上更改UI。如果您的目标只是每9秒更改一次TextView的内容,则可以使用处理程序。 E.g。
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);