Android WebView性能

在我的应用程序中,我在webview中加载外部url的列表,并允许用户翻阅它们。 Webviews被加载到视图鳍状肢。 我发现webview加载url的性能非常糟糕。 我已经尝试了所有使用框架布局,以限制加载的Web浏览器的数量。 仍然performance不理想。

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

我的Webview设置是 –

webView.setInitialScale(WEBVIEW_SCALE); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setBuiltInZoomControls(false); webView.setWebViewClient(new MyWebViewClient()); webView.setOnTouchListener( new OnTouchListener()); 

尝试这个:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { webView.setLayerType(View.LAYER_TYPE_HARDWARE, null); } else { webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); } 

我认为以下效果最好:

 if (Build.VERSION.SDK_INT >= 19) { webView.setLayerType(View.LAYER_TYPE_HARDWARE, null); } else { webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); } 

Android 19具有用于WebView的Chromium引擎。 我想这与硬件加速更好。

更多信息Android 4.4 KitKat,浏览器和Chrome WebView

这已经在这里讨论了: 增强webView的性能(应该和原生Web浏览器的性能相同)

我遇到了一个类似的问题,经过一些大量的debugging后发现原生浏览器和WebView浏览器似乎使用不同的caching。

此代码可用于禁用WebViewcaching,并使WebView对我来说更快(尽pipe不以caching为代价)。 请注意,它使用私有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); }