黑莓试图创建一个倒数计时器,并且在文本更新时抛出异常

问题描述

|| 我正在尝试创建一个倒数计时器。我使用的是给定为
timertask
Timer
对象。我有一个名为
mTimerdisplay
标签字段,它是我称为
cGlobols
的类的静态成员。 在计时器调用
run
方法上,可以很好地更改标签的颜色:
cGlobals.mTimerdisplay.setBackground(
    BackgroundFactory.createSolidBackground(0xff0000));
当我添加以下行时:
cGlobals.mTimerdisplay.setText(\"Hi\");
它抛出一个
IllegalStateException
: 我查了一下,说   表示已调用方法   在非法或不适当的时间。   换句话说,Java环境   或Java应用程序不在   所请求的适当状态   操作。, 这是否意味着我无法在线程上执行此操作,但是如果是这样,为什么我可以更改颜色?如果我无法在计时器线程上执行此操作,是否还有另一种方法可以执行此操作?     

解决方法

工作线程无法获得事件线程才能更新UI。将setText()调用包装在一个同步块中,并使用Application.getEventLock()获得此锁。