Android TextView计时器是怎么用的?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

对于我的Android应用程序,有一个计时器可以测量已经过了多少时间。在100毫秒内,我用一些文本更新我的TextView,例如“Score:10 Time:100.10 seconds”。但是,我发现TextView只是前几次更新。该应用程序仍然非常敏感,但标签不会更新。我试图调用.invalidate(),但它仍然不起作用。我不知道是否有某种方法可以解决这个问题,或者使用更好的小部件。

这是我的代码的一个例子:

float seconds;
java.util.Timer gametimer;
void updatecount() { TextView t = (TextView)findViewById(R.id.topscore);
t.setText("Score: 10 - Time: "+seconds+" seconds");
t.postInvalidate();
}
public void onCreate(Bundle sis) {
... Load the UI, etc...
  gametimer.schedule(new TimerTask() { public void run() {
     seconds+=0.1; updatecount();
} }, 100, 100);
}
提问于
用户回答回答于
用户回答回答于

我认为正在发生的是你正在脱离UI线程。有一个单独的“looper”线程可处理所有屏幕更新。如果你试图调用“invalidate()”,并且你不在这个线程中,则什么都不会发生。

改为在视图上使用“postInvalidate()”当你不在当前的UI线程中时,它会让你更新视图。

扫码关注云+社区