如何摆脱UI线程中的预加载器

时间:2009-12-23 22:18:38

标签: blackberry user-interface event-handling

在我的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));

}
}

1 个答案:

答案 0 :(得分:2)

沙漏只应该在事件锁定持续时间过长时显示,所以除非你的getFormatted()方法很慢,否则我看不到上面代码的问题。

您可能需要尝试以下代码,以便将项目添加到现有事件队列中,而不是显式获取锁定:

private void setRecordingTime(final long maxRecordTime) {
    UiApplication.getUiApplication().invokeLater(new Runnable() {
        public void run() {
            label.setText(getFormatted(maxRecordTime));
        }
    });
}