我正在使用计时器来创建秒表。计时器通过增加整数值来工作。然后,我想通过不断更新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的任务?
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内容。