我正在尝试创建一个倒计时器。我使用了Timer
的{{1}}对象。我有一个名为timertask
的标签字段,它是我调用mTimerDisplay
的类的静态成员。
在计时器调用的cGlobols
方法上,可以更改标签的颜色:
run
当我添加以下行时:
cGlobals.mTimerDisplay.setBackground(
BackgroundFactory.createSolidBackground(0xff0000));
它抛出一个cGlobals.mTimerDisplay.setText("Hi");
:
我看了这个,然后说了
表示已调用方法 在非法或不适当的时间。 换句话说,Java环境 或Java应用程序不在 适合所要求的州 操作中,
这是否意味着我无法在线程上执行此操作,但如果是这样,为什么我可以更改颜色?如果我不能在计时器线程上执行此操作,还有另一种方法吗?
答案 0 :(得分:3)
如果没有获取事件线程,工作线程无法更新UI。将setText()调用包装在synchronized块中,并使用Application.getEventLock()来实现此锁定。