Как избавиться от предварительного загрузчика в потоках пользовательского интерфейса - PullRequest
0 голосов
/ 24 декабря 2009

В моем приложении 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 Ответ

2 голосов
/ 24 декабря 2009

Песочные часы должны показываться только в том случае, если блокировка события удерживается слишком долго, поэтому, если ваш метод getFormatted () не слишком медленный, я не вижу проблемы с кодом выше.

Возможно, вы захотите попробовать следующий код, чтобы добавить элемент в существующую очередь событий вместо явного захвата блокировки:

private void setRecordingTime(final long maxRecordTime) {
    UiApplication.getUiApplication().invokeLater(new Runnable() {
        public void run() {
            label.setText(getFormatted(maxRecordTime));
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...