-
应用程序结构
每个CEF3应用程序都有一个相同的结构:
- 提供一个入口函数以初始化CEF和运行每个子进程逻辑和CEF消息处理
- 提供一个CefApp子类处理某个进程的回调
- 提供一个CefClinet子类处理某个浏览进程的回调
- 调用CefBrowserHost::CreateBrowser()函数创建浏览进程实例并使用CefLifeSpanHandler来管理浏览生命周期
2. 入口函数
CEF3应用程序都是以多进程方式运行的。这些进程都可以使用相同的可执行文件和独立的可执行文件被分配在每个子进程上。每个可执行进程都有一个入口函数。
每个CEF3子进程运行时使用运行行来指定配置信息并通过CefMainArgs结构传递给CefExecuteProcess函数,CefMainArgs结构是跨平台的。
如:
CefMainArgs main_args(argc, argv);
CefMainArgs main_args(hInstance);
3.单可执行体-单进程运行方式
当单可执行体时行时,入口函数CefExecuteProcess在不同进程类型之间需要区分。单可执行体结构只支持window和linux,不支持macos
4. 分离的子进程可执行体-多进程运行方式
当使用一个分离的子进程执行体时需要两个分离的进程和入口函数。
5. 消息循环集成
CEF可集成已经存在的应用程序消息循环来代替它自己的消息循环。有2种方式:
-
- 正常的调用CefDoMessageLoopWork() 函数来代替调用 CefRunMessageLoop()。每调用 CefDoMessageLoopWork()函数会对CEF消息循环执行单一集成。
应该谨慎使用这种方法。调用的方法也经常会挨饿CEF消息循环凑并且浏览器性能产生影响。调用方法过于频繁地将影响CPU使用率。
- 正常的调用CefDoMessageLoopWork() 函数来代替调用 CefRunMessageLoop()。每调用 CefDoMessageLoopWork()函数会对CEF消息循环执行单一集成。