【发布时间】:2023-03-24 15:23:01
【问题描述】:
在我的应用程序中,我正在 webview 中加载外部 url 列表并允许用户翻阅它们。 Webview 被加载到视图翻转器上。我发现 webview 加载 url 的性能真的很差。我已经尝试了从使用框架布局到限制要加载的 webview 数量的所有方法。性能还是不尽如人意。
如何优化 webview 的性能?这应该是一种常见的用法。我是否遗漏了一些明显的东西。
我的 Webview 设置是 -
webView.setInitialScale(WEBVIEW_SCALE);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(false);
webView.setWebViewClient(new MyWebViewClient());
webView.setOnTouchListener( new OnTouchListener());
【问题讨论】:
-
你确定不是从互联网加载数据的问题吗?
-
不。数据已加载。但这需要很长时间。
-
一次加载多个页面的成本很高——即使加载一个网页也是一项昂贵的操作。抛开图像处理、视口缩放等所有事情不谈。许多并发套接字连接的性能也存在限制。最后我猜如果你看日志你会看到很多 GC thrash。一次激活多个 WebView 并不可取。如果没有对“性能不令人满意”或您正在运行的手机进行定量描述,我只能猜测您无能为力。
-
我花了相当多的时间尝试优化同一种想法,发现它确实不是一个好的解决方案。页面加载和 viewflipper 之间的开销太大了。就我而言,通过将每个页面加载到按 CSS3 列排序的页面中,并使用 fling 在列之间移动,我能够获得良好的性能。渲染一个大页面时仍然存在延迟,但它比将每个页面加载到 viewflipper 中要快几倍。不过,这确实不适用于复杂的 html 文档……我的只有文本和几张图片。