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