Android WebView性能

Ush*_*sha 17 android webview

在我的应用程序中,我正在加载webview中的外部URL列表,并允许用户翻阅它们.Web视图被加载到视图翻录器上.我发现webview加载网址的性能非常糟糕.我已经尝试了从使用框架布局到限制要加载的webview数量的所有内容.表现仍不尽如人意.

如何优化webview的性能?这应该是一种常见的用法.我错过了一些明显的东西.

我的Webview设置是 -

    webView.setInitialScale(WEBVIEW_SCALE);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setBuiltInZoomControls(false);
    webView.setWebViewClient(new MyWebViewClient());    
    webView.setOnTouchListener( new OnTouchListener());
Run Code Online (Sandbox Code Playgroud)

Ash*_*lix 2

这已经在这里讨论过:增强 webView 性能(应该与本机 Web 浏览器具有相同的性能)

我遇到了类似的问题,经过一番大量调试后发现本机浏览器和 WebView 浏览器似乎使用不同的缓存。

此代码可用于禁用 WebView 缓存,并使 WebView 对我来说更快(尽管以不缓存为代价)。请注意,它使用私有 API,因此使用它时您将面临代码在未来版本中损坏的风险:

try
{
  Method m = CacheManager.class.getDeclaredMethod("setCacheDisabled", boolean.class);
  m.setAccessible(true);
  m.invoke(null, true);
}
catch (Throwable e)
{
  Log.i("myapp","Reflection failed", e);
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为这个设置是为了页面的第二次加载。我从 setCacheMode 的 api 中得到了这个:缓存的使用方式基于导航选项。对于正常的页面加载,将检查缓存并根据需要重新验证内容。返回时,不会重新验证内容,而是仅从缓存中提取内容。此函数允许客户端覆盖此行为。 (4认同)