概述
之前写了一些关于libcef的博客,水平很低,仅供初学者,应用者提供一些参考而已。
一起学libcef–给你的浏览器设置url
一起学libcef–一个应用libcef的简单例子(windows程序)
一起学libcef–搭建自己的libcef运行环境(Win32程序,错误C2220解决方案)
一起学libcef–源码文件介绍(VS2015运行DEMO)
每个CEF3应用程序都是相同的结构
提供入口函数,用于初始化CEF、运行子进程执行逻辑或者CEF消息循环。
提供CefApp实现,用于处理进程相关的回调。
提供CefClient实现,用于处理browser实例相关的回调
执行CefBrowserHost::CreateBrowser()创建一个browser实例,使用CefLifeSpanHandler管理browser对象生命周期。
现在就写一写如何正确关闭自己创建的浏览器。
很多人应该和我一样,把cef嵌入到了自己的客户端中。使用directui mfc qt等技术。原来你以为你退出自己的客户端时,你所创建的cef也会跟着关闭。
表面上似乎是正确的,但是,当你查看任务管理器的时候会发现,此时的cef browser进程还存在。
这就要求我们在退出客户端时,要关闭cef browser。
你很机智的找到了函数:
CefShutdown()
我们看看这个函数:
// This function should be called on the main application thread to shut down
// the CEF browser process before the application exits.
///
/*--cef()--*/
void CefShutdown();
再退出客户端的时候你调用了上面的函数。
你以为大功告成了,其实不然。
你还记不记得我们是怎么创建cef的,是不是先建立了一个消息循环,即使没有创建browser,这个messageloop依然存在的。
所以,我们再退出客户端的时候,也要记得杀死消息循环。
也很简单,你会发现一个函数:
CefQuitMessageLoop()
我们看看这个函数:
// Quit the CEF message loop that was started by calling CefRunMessageLoop().
// This function should only be called on the main application thread and only
// if CefRunMessageLoop() was used.
///
/*--cef()--*/
void CefQuitMessageLoop();
描述的很清楚了,就是要退出CefRunMessageLoop()开始的message loop。
调用以上提到的两个函数,你就会安全的退出客户端了。
水平有限,如果疑问,欢迎讨论!!!!
最后
以上就是含蓄橘子为你收集整理的一起学libcef--正确关闭你创建的浏览器的全部内容,希望文章能够帮你解决一起学libcef--正确关闭你创建的浏览器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复