Blackberry пытается создать таймер обратного отсчета, и исключение выдается при обновлении текста - PullRequest
0 голосов
/ 25 мая 2011

Я пытаюсь создать таймер обратного отсчета.Я использую объект Timer, которому присвоен timertask.У меня есть поле метки с именем mTimerDisplay, которое является статическим членом класса, который я называю cGlobols.

В методе run, который вызывается таймером, можно изменить цвет меткиштраф:

cGlobals.mTimerDisplay.setBackground(
    BackgroundFactory.createSolidBackground(0xff0000));

Когда я добавляю следующую строку:

cGlobals.mTimerDisplay.setText("Hi");

, она выдает IllegalStateException: я посмотрел это вверх и он говорит

Сигналы о том, что метод был вызван в недопустимое или неподходящее время.Другими словами, среда Java или приложение Java не находятся в соответствующем состоянии для запрошенной операции.,

Означает ли это, что я не могу выполнить эту операцию в потоке, но если да, то почему я могу изменитьцвет?Если я не могу сделать это в потоке таймера, есть ли другой способ сделать это?

1 Ответ

3 голосов
/ 25 мая 2011

Рабочий поток не может обновить пользовательский интерфейс, не достигнув потока событий.Оберните вызов setText () в синхронизированный блок и используйте Application.getEventLock () для достижения этой блокировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...