使用runOnUiThread更新TextView

时间:2015-02-21 14:19:17

标签: java android multithreading

我试图让我的游戏活动有一个计时器。 Timer-Thread需要在我的Activity中没有的其他类中。我试过了这个,但它只显示了我的第一个毫秒而且没有更新。

public class GameTimer implements Runnable {

private double count = 0.00;

@Override
public void run(){
    while(true){
        try{
            Thread.sleep(10);
            count += 0.01;
        } catch (Exception e){

        }
    }
}
public String getCountAsString(){
    return new DecimalFormat("0.00").format(count);
}
}

在活动中

Thread tf = new Thread(){
    @Override
    public void run() {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                timerTextView.setText(controller.getGameTimer().getCountAsString());
            }
        });
    }
};
initGameyard();
Thread testThread = new Thread(controller.getGameTimer());
testThread.start();
tf.start();

1 个答案:

答案 0 :(得分:0)

您可以将GameView作为参数添加到GameTimer构造函数中,如下所示:

public GameTimer(TextView tv) {
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        public void run() {
        try{
            Thread.sleep(10);
            count += 0.01;
            tv.setText(count + "");
        } catch (Exception e) {

        }
        handler.postDelayed(this, 10);
        }
        }, 10);
    }
}