gpt4 book ai didi

java - 如何在 Vaadin 8 中从子线程获取访问 UI 线程

转载 作者:行者123 更新时间:2023-12-02 02:03:54 25 4
gpt4 key购买 nike

我以前用过Vaadin 7。我可以使用以下代码从子线程访问 UI 线程:

    UI.getCurrent().access(() -> {
status.setVisible(true);
});

但目前,我正在从 Vaadin 7 迁移到 Vaadin 8。在 Vaadin 8 中,UI.getCurrent() 从子线程返回 null。那么我们如何从子线程访问UI线程呢?

最佳答案

Vaadin 中的首选模式是应用诸如(模型 View 呈现器)之类的 MVP。

当您通过扩展布局创建 View 时,您可以使用 getUI()方法,当附加布局和 View 时返回正确的 UI 实例。这意味着在实现 View 的类中,您还可以实现更新状态的方法,例如:

updateStatus(boolean visible) {
getUI().access(() -> {
status.setVisible(true);
});
}

如果您的应用程序容易出现用户急于关闭浏览器、网络状况不佳等情况,您可能需要将 access(..) 包含在 try catch 中并捕获 UIDetachedException,如果浏览器连接突然丢失,则可能会发生这种情况。

后台线程中的进程可以安全地调用此方法,即 myView.updateStatus(true)。通常这是通过 Presenter 完成的

presenter.getView().updateStatus(true);

关于java - 如何在 Vaadin 8 中从子线程获取访问 UI 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51137436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com