WebEngine 生命周期示例

冻结和丢弃后台标签页以减少 CPU 和内存使用量。

WebEngine 生命周期示例演示了如何使用 的 和 属性来减少标签页浏览器中后台标签页的 CPU 和内存使用量。WebEngineView lifecycleState recommendedState

有关生命周期功能的概述,请参阅页面生命周期 API

运行示例

要从 Qt Creator,打开Welcome 模式,然后从Examples 中选择示例。有关详细信息,请参阅Qt Creator: 教程:构建并运行

示例的用户界面元素

该示例使用Qt Quick Controls 2Material Style(暗色变体)实现了一个传统的标签式浏览器。主应用程序窗口 (WebBrowser.qml) 顶部分为标题栏,其余部分为主查看区域。标题包含标签栏 (WebTabBar.qml),每个标签有一个按钮 (WebTabButton.qml)。主区域由一堆选项卡组成 (WebTabStack.qmlWebTab.qml)。每个标签页顶部都有一个工具栏和一个用于显示网页的WebEngineView 。最后,主窗口还有一个用于更改设置的Drawer 。点击工具栏上的"⋮"按钮即可打开抽屉。

注: 请注意,WebTab.qml 使用fromUserInput 来处理不完整的 URL。

示例中的生命周期状态

示例实现了两种更改生命周期状态的方法:手动和自动。手动方式是直接使用lifecycleState 属性来更改网页视图的生命周期状态,而自动方式是基于计时器的,同时也考虑到了recommendedState

标签栏中的标签标题以颜色编码,冻结的标签显示为蓝色,废弃的标签显示为红色。

手动生命周期控制

手动控制由标签栏按钮上的上下文菜单提供 (WebTabButton.qml)。菜单上有三个单选按钮,每个生命周期状态一个,并选中当前状态。有些按钮可能会被禁用,因为它们代表非法的状态转换(例如,Discarded 视图不能直接转换到Frozen 状态),或者因为其他先决条件未满足(例如,可见视图只能处于Active 状态)。

自动生命周期控制

自动控制是通过WebTab 组件 (WebTab.qml) 中的Timer 实现的。每当网络视图的lifecycleStaterecommendedState 不匹配时,计时器就会启动。一旦计时器启动,视图的生命周期状态就会设置为推荐状态。

延时是为了避免用户在切换标签页时过快改变生命周期状态。可以通过工具栏上的"⋮"按钮在设置抽屉中更改冻结和丢弃延迟。

这是一种相当简单的自动生命周期控制算法,但也可以在lifecycleState 属性的基础上构思和实施更复杂的算法。例如,Chromium 浏览器试验性地使用预训练的深度神经网络来预测用户激活下一个标签页的时间,基本上是根据用户对标签页的兴趣程度来对标签页进行排序。至于如何实现这样的算法,读者可自行尝试。

示例项目 @ code.qt.io

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.