【发布时间】:2012-10-30 16:52:29
【问题描述】:
我有这个现有的定时器功能:
final Timer waveTimer = new Timer() {
@Override
public void run() {
double value = r.getByte(); // takes quite long to finish
wave.renderWaveOnFly(value);
}};
waveTimer.scheduleRepeating(50);
不管它如何工作,用户界面被“阻止”并且用户无法在用户界面中单击并执行任何操作,直到当部分用户界面调用waveTimer.cancel() 时,我创建了另一个定时器,该定时器在 10 点后取消此定时器秒,所以 UI 在那之前是不可用的。
有没有办法实现一个非阻塞计时器,让它暂停一段时间,也许只是为了确保 UI 没有被阻塞,并且用户仍然可以在 UI 中执行某些操作。
我的意思是,仍然感觉 UI 仍然是响应式的。
我不确定这个数字,但是说它每 100 毫秒停止一次,然后让位于 UI 并在暂停或类似的情况后恢复 100 毫秒。我正在考虑用什么方法来处理。
【问题讨论】:
-
不应在 UI 线程中执行任何昂贵的操作!为此使用单独的线程。或者,如果无法绕过 ti,则显示“正在加载...”/“请稍候...”屏幕,最好是带有进度指示器。
-
@ppeterka 我希望我能做到,但我的应用程序的功能是从它从 flash 对象(当然用 javascript 包装)获得的实时字节中渲染一个波形
-
你使用的Timer的包装是什么?
标签: gwt