我有以下情况。在我的应用程序中,我使用Java的TimerTask定期更新一些控件值。 更新方法如下所示:
public void updateDates()
{
if(!myUI.get().isAttached())
return;
myUI.get().access(() -> {
isAsyncUpdate = true;
resetUnmodified();
isAsyncUpdate = false;
myUI.get().push();
});
}
好的,一旦用户登录,所有内容都在更新,没有任何问题。假设用户注销然后同一用户登录。之后isAttached()方法返回false。 我无法理解为什么会发生这种情况以及如何克服这个问题( 我该如何解决这个问题?
提前感谢您提供任何帮助
答案 0 :(得分:0)
我似乎找到了问题的根源。我使用单个计时器对象来处理所有控件。现在我已经重构了类,使其每个控件都使用自己的计时器。它似乎解决了这个问题。但是对于我来说这个解决方案并不完美:单个计时器比许多人更好,而他们的工作实际上也是如此。但到目前为止,我不知道如何以另一种方式解决这个问题..
答案 1 :(得分:-1)
你应该使用静态方法UI.getCurrent(),然后将它强制转换为你自己的myUI,这样你就一定会得到当前使用过的用户界面。