web视图提高性能(应该是相同的性能,本机的Web浏览器) [英] Enhance webView performance (should be the same performance as native Web Browser)

查看:145
本文介绍了web视图提高性能(应该是相同的性能,本机的Web浏览器)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的经验是,在一个web视图装载网站比执行同样的动作,在Android Web浏览器慢得多。我可以看到,在我的Apache日志已加载的所有文件,这将需要几秒钟,直到页面显示的WebView控件,但是。打开同一页中的本地Web浏览器将导致立即显示。看来,渲染在某种程度上削弱。

哪些浏览器设置,我们必须为了达到相同的性能,在本地Web浏览器加载页面申请?

我们的当前设置:

  browserset.setLoadsImagesAutomatically(真正的);
browserset.setJavaScriptEnabled(真正的);
browserset.setDatabaseEnabled(真正的);
browserset.setDatabasePath(数据/数据​​/ com.xxx /数据库);
browserset.setDomStorageEnabled(真正的);
browserset.setRenderPriority(WebSettings.RenderPriority.HIGH);
browserset.setSupportZoom(假);
browserset.setUserAgentString(browserset.getUserAgentString()+(XY ClientApp));
browserset.setAllowFileAccess(真正的);
browserset.setSavePassword(假);
browserset.setSupportMultipleWindows(假);
browserset.setAppCacheEnabled(真正的);
browserset.setAppCachePath();
browserset.setAppCacheMaxSize(5 * 1024 * 1024);
 

解决方案

我遇到了类似的问题,经过一些沉重的调试注意到了本地浏览器和浏览器的WebView似乎可以用不同的缓存。

这code可以用来禁用的WebView缓存,并取得的WebView快得多,我(但在不缓存的费用)。注意,它使用专用的API,所以通过使用它,你正在冒着code将在未来的版本中突破:

 尝试
{
  方法M = CacheManager.class.getDeclaredMethod(setCacheDisabled,boolean.class);
  m.setAccessible(真正的);
  m.invoke(NULL,TRUE);
}
赶上(Throwable的E)
{
  Log.i(MyApp的,反思失败,E);
}
 

My experience is that loading websites in a WebView is much slower than performing the same actions in the Android Web Browser. I can see that all files have been loaded in my Apache log, it will take a few seconds until the page is displayed in the WebView control, however. Opening the same page in the native Web browser will result in an immediate display. It seems that rendering is somehow crippled.

Which browser settings do we have to apply in order to achieve the same performance as loading the page in the native web browser?

Our current settings:

browserset.setLoadsImagesAutomatically(true);
browserset.setJavaScriptEnabled(true);
browserset.setDatabaseEnabled(true);
browserset.setDatabasePath("data/data/com.xxx/databases");
browserset.setDomStorageEnabled(true);
browserset.setRenderPriority(WebSettings.RenderPriority.HIGH);
browserset.setSupportZoom(false);
browserset.setUserAgentString( browserset.getUserAgentString() + " (XY ClientApp)" );
browserset.setAllowFileAccess(true);
browserset.setSavePassword(false);
browserset.setSupportMultipleWindows(false);
browserset.setAppCacheEnabled(true);
browserset.setAppCachePath("");
browserset.setAppCacheMaxSize(5*1024*1024);

解决方案

I ran into a similar issue, and after some heavy debugging noticed the native browser and WebView browser seem to be using different caches.

This code can be used to disable the WebView cache, and made WebView much faster for me (though at the expense of not caching). Note that it uses private APIs, so by using it you're risking the code will break in future releases:

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);
}

这篇关于web视图提高性能(应该是相同的性能,本机的Web浏览器)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆