java - JCEF : CefApp dispose and restart

标签 java chromium-embedded

我在我的应用程序中使用 JCEF(Java Chromium 支持的框架)。

情况是,当用户单击“启动”按钮时,我必须启动浏览器窗口,当他关闭窗口时,我必须退出浏览器并进行清理。

代码是:

   addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    try {
                        CefApp.getInstance().dispose();
                    } catch (Exception ex) {
                        Exceptions.printStackTrace(ex);
                    } finally {
                        dispose();
                    }
                }
            }); 

调用 dispose() 会使 cefApp 状态变为 TERMINATED。因此,当用户再次单击“启动”时,我尝试初始化 cefApp,它会显示

java.lang.IllegalStateException: CefApp was terminated

因为如果状态为 TERMINATED,CefApp.getInstance() 会抛出此错误。

如何处理并重新启动 CefApp 来克服这个问题?

最佳答案

如果您想重用CefApp实例,则不能对其调用dispose()。相反,您需要在从容器中删除任何浏览器 UI 组件之前在 CefClient 实例上调用 dispose()。如果您在删除 UI 组件后处置客户端(作为 Window.dispose() 的一部分发生),那就太晚了。

关于java - JCEF : CefApp dispose and restart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61866217/

相关文章:

c++ - 如何在Ubuntu的Qt Creator中集成chromium浏览器项目

linux - CefGlue 在 Linux 上运行示例

java - Array - Dupe Scanner 和算法的运行时间

java - 在Java中调用另一个类中ArrayList的方法

java - Java-8 中的方法引用和泛型

java - 如何使用ava通过浏览器检测国家信息

c++ - 如何为 Visual Studio 2017 构建 CEF1

c++ - 错误: ‘ ’ may be used uninitialized in this function [-Werror=maybe-uninitialized]

javascript - 如何将正文中的文本内容复制到剪贴板

java - 如何在android中使用Chart自定义条形图