在我的blackberry应用程序中,我正在执行类似下面的操作来更新我的线程类的run方法中的每一秒的标签字段。但问题是应用程序显示预装载器/小时玻璃每次更新。我想摆脱那个小时玻璃,我希望看到要发生的标签字段的平滑更新。我怎么能这样做
public void run()
{
while(true)
{
Thread.sleep(1000);
setRecordingTime(new Date().getTime());
}
}
private void setRecordingTime(long maxRecordTime) {
synchronized (UiApplication.getEventLock()) {
label.setText(getFormatted(maxRecordTime));
}
}
答案 0 :(得分:2)
沙漏只应该在事件锁定持续时间过长时显示,所以除非你的getFormatted()方法很慢,否则我看不到上面代码的问题。
您可能需要尝试以下代码,以便将项目添加到现有事件队列中,而不是显式获取锁定:
private void setRecordingTime(final long maxRecordTime) {
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
label.setText(getFormatted(maxRecordTime));
}
});
}