【发布时间】:2010-11-03 21:35:16
【问题描述】:
我正在为 BlackBerry 编写秒表应用程序(类似于 BlackBerry 内置的 StopWatch)。有一个计时器标签以 MM:SS:T(分钟、秒、十分之一秒)的格式显示当前时间。标签使用 TimerTask 每 100 毫秒刷新一次。
应用程序运行良好,时间显示正确,但有时计时器标签未按预定间隔(每 100 毫秒)更新。计时器标签暂停(不计数)一段时间并继续计数(同时仍正确显示时间)
我的想法是在此暂停期间不执行 TimerTask 来更新计时器标签。你知道为什么应用会这样,以及如何解决吗?
下面是更新定时器标签的线程:
public class ThreadUpdateTime extends Thread
{
private MyMainScreen myMainScreen;
private Timer updateTimerLabelTimer = new Timer();
public ThreadUpdateTime(MyMainScreen parent)
{
myMainScreen=parent;
}
public void run()
{
try {
updateTimerLabelTimer.schedule(new RecordTimer(myMainScreen), TIMER_DELAY, TIMER_INTERVAL);
} catch (Exception e) {
//put alert here
}
}
public void iStop()
{
updateTimerLabelTimer.cancel();
}
}
定时器任务:
public class RecordTimer extends TimerTask
{
private MyMainScreen myMainScreen;
public RecordTimer(MyMainScreen parent)
{
myMainScreen=parent;
}
public void run()
{
myMainScreen.iUpdateTimerLabel();
}
}
和 iUpdateTimerLabel 方法:
public void iUpdateTimerLabel()
{
//calculate : sign, sMin, sSec, sTenth
synchronized(Application.getEventLock())
{
lblSpotTime.setText(sign+sMin+":"+sSec+"."+sTenth+" ");
}
}
【问题讨论】:
-
建议您发布
TimerTask的代码以及将其提交到Timer的代码 -
这可能与计时器无关,尤其是。见相关:stackoverflow.com/questions/2569468/…
标签: blackberry timer