- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个应用程序,它是用 Qt/C++ 编写的。它的 GUI 在 Html/Css/JS 中。
该应用在 Chrome 和 Edge 上运行良好。在台式机上,应用程序将操作系统浏览器作为一个单独的进程调用。浏览器通过 Websocket 连接到应用程序并交换消息以用于显示目的。这很好用。
但是,这在手机中不起作用。因为将浏览器作为一个单独的进程调用,会将实际的应用程序发送到 Android 和 iOS 的后台。
现在关于 SO 的许多答案都建议使用内置的移动 webview。但是,Android 中的 Webview 并不能满足所有设备的所有要求。而 iOS Webview 简直是不合标准且薄弱的。
问题 : 有没有办法将任何类似 chrome 的浏览器作为应用程序本身的线程启动?
目的是在不影响 Webview 限制的情况下将应用程序保持在前台。如果需要,可以使用源代码集成和编译。
最佳答案
Web 引擎是浏览器运行方式的驱动体。由于 chrome 基于 chromium web 引擎,您需要相应地修改引擎。
Chrome 为每个选项卡使用进程,而 Firefox 使用线程。
Chrome架构有两个主要进程浏览器进程 和 渲染进程 .浏览器 UI 正在浏览器进程中运行,当您在 Chrome 浏览器中打开新选项卡时,会为每个选项卡创建一个新进程,称为 渲染进程 .渲染器进程处理您的 HTML 内容的渲染。
假设您在 chrome 中打开了 10 个选项卡,这会导致创建 10 个渲染器进程和 1 个浏览器进程。
为什么要为每个选项卡单独的 Renderer 进程?
假设在浏览互联网的任何时间点,由于某种原因,某个选项卡崩溃了,那么只有那个渲染器进程被杀死,而其他进程仍然活着。您的 9 个选项卡仍然可以响应并正常工作。
由于浏览器 UI 在不同的进程中运行。浏览器用户界面一般不会挂起,并且响应速度足够快。
由于每个渲染器作为不同的进程运行,共享数据访问很困难(线程可以访问共享数据),这提供了选项卡间数据安全性。
还有许多其他进程正在运行并有自己的目的。
关于android - 如何将 "Chrome"(或等效项)作为线程而不是进程启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61927200/
我是一名优秀的程序员,十分优秀!