mic*_*ico 10 javascript android webview openlayers cordova
我在 Chrome 最新的 WebView 上发现了[1]这个问题。要生产它,您需要三件事:
我的技术堆栈在应用程序内部使用 Openlayers 地图,该地图实际上是一个包含 Cordova 的小型网站,Cordova 是使用 WebView 的组件。
我所说的大量使用是指地图必须具有多层地图数据才能渲染,并且我必须采取一些措施来移动地图并使其在前一个渲染内容完成之前开始加载下一个渲染内容。
安装后第一次打开地图时,地图在重负载下工作正常。当我终止应用程序并再次登录并在应用程序第一次尝试渲染时做出剧烈动作时,问题就开始了。之后,地图不会整体呈现内容,某些图块和地图菜单仅部分呈现。
即使我单击一些地图图层,这种行为仍然会继续,并且当它们很少时,问题就会解决。有趣的是,没有一个点的负载足以触发问题或稳定下来,至少每个方向的点是不同的。
仅当存在问题时,logcat 才会出现一条警告消息:
chromium: [错误:tile_manager.cc(821)] 警告:超出图块内存限制,某些内容可能无法绘制
我可以观察到,2021 年 11 月 15 日版本更新删除了一些“无用数据” [2]。我不能 100% 确定这两件事是否相关,但我已经意识到该特定更新之前的版本在我的应用程序中工作得很好(我从 Google Play 中的 WebView 中删除了更新)。
目前有三种解决方法:
正如您所观察到的,这些都效果不佳。我相信其他 WebView 重度用户也会看到同样的行为,所以我只用一个主要问题来打开这个问题:
与此同时,我的错误报告正在 Google 中推进,我可以做些什么来克服这个问题?
资料来源:
[1] https://bugs.chromium.org/p/chromium/issues/detail?id=1274482
[2] https://chromium.googlesource.com/chromium/src/+/a0994781ea666d9b630b6478206ac429ed8444d1%5E%21/#F0