小编典典

Android计时器更新textview(UI)

java

我正在使用计时器来创建秒表。计时器通过增加整数值来工作。然后,我想通过不断更新textview在活动中显示此值。

这是我在服务中尝试更新活动的textview的代码:

protected static void startTimer() {
    isTimerRunning = true; 
    timer.scheduleAtFixedRate(new TimerTask() {
        public void run() {
            elapsedTime += 1; //increase every sec
            StopWatch.time.setText(formatIntoHHMMSS(elapsedTime)); //this is the textview
        }
    }, 0, 1000);
}

我在错误的线程中更新UI时遇到某种错误。

如何调整我的代码以完成不断更新textview的任务?


阅读 323

收藏
2020-09-08

共1个答案

小编典典

protected static void startTimer() {
    isTimerRunning = true; 
    timer.scheduleAtFixedRate(new TimerTask() {
        public void run() {
            elapsedTime += 1; //increase every sec
            mHandler.obtainMessage(1).sendToTarget();
        }
    }, 0, 1000);
}

public Handler mHandler = new Handler() {
    public void handleMessage(Message msg) {
        StopWatch.time.setText(formatIntoHHMMSS(elapsedTime)); //this is the textview
    }
};

上面的代码可以工作…

注意:必须在您的主线程中创建处理程序,以便您可以修改UI内容。

2020-09-08