在混合式安卓应用中导航时,Chrome设备上会出现多个分离的Webview实例

31
我们有一个混合式的安卓应用程序。我正在尝试在 WebView 和本地上下文之间来回导航。使用 chrome://inspect/#devices,我发现多个设备实例被检查时是detached,而其中一个会在 chrome 中显示为 attached
参考SO-28254614,虽然我没有开发 WebView,但根据我对我们应用程序的了解,这些 WebView 不是使用 Cordova 设计的,而是使用 JS 开发的。
我的问题是:
  • 为什么我们在 Chrome 上看到这些 detached 设备?
  • 这可能是 Android WebView 中的泄漏吗?

1
您在使用应用程序的 WebView 浏览时是否遇到了性能问题?以下是有关内存泄漏的 Google 文档:https://developers.google.com/web/tools/chrome-devtools/profile/memory-problems/memory-diagnosis可能不会有帮助,但这是一个关于 Eclipse 的伞形错误,涉及与分离的 Web 视图相关的问题。https://bugs.eclipse.org/bugs/show_bug.cgi?id=276221 - Elon Zito
1
@ElonZito 网页视图的性能相对于本地环境较慢。请遵循性能检查并注意错误。 - Naman
1个回答

4
这些 Web 检查器的工作方式是使用 RemoteDebug Protocol。该协议定义了用于“检查”页面的各种消息和命令。
检查器的一个实例一次只能连接一个客户端。因此,假设您在 Web 视图和本机上下文之间切换,您基本上为每个新上下文切换生成新的 Web 视图。
这将表明以前打开的 Web 视图现在已经“孤立”,对于所有实际目的来说都是分离的
您可以尝试通过在 Web 视图上调用destroy()来通知虚拟机不再使用 Web 视图,以让垃圾收集器知道它不再需要。
希望这提供了更深入的理解背后发生了什么。

2
我的当前应用程序也是混合型的,这个答案非常准确。您描述的情况被Sunny完美地总结了起来。据我所知,这是完全正常的行为,我想回答您的问题“这可能是Android WebView泄漏的可能性吗?”是否定的。 - bhawkeswood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接