JCEF : CefApp 释放并重新启动



我在我的应用程序中使用了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 状态变为"已终止"。因此,当用户再次单击启动时,我尝试启动cefApp,它说

java.lang.IllegalStateException: CefApp was terminated

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

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

如果要重用CefApp实例,则无法在其上调用dispose()。相反,您需要在CefClient实例上调用dispose(),然后再从其容器中删除任何浏览器 UI 组件。如果在删除 UI 组件(作为Window.dispose()的一部分(后释放客户端,则为时已晚。

怎么样,找到一种方法不关闭JCEF,而只是Set.Visible(false(

最新更新