我的经验是,在WebView中加载网站要比在Android Web浏览器中执行相同的操作慢得多.我可以看到所有文件都已加载到我的Apache日志中,但是在页面显示在WebView控件中之前需要几秒钟.在本机Web浏览器中打开同一页面将立即显示.似乎渲染在某种程度上是残废的.
我们必须应用哪些浏览器设置才能获得与在本机Web浏览器中加载页面相同的性能?
我们当前的设置:
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);
Guypo.. 17
我遇到了类似的问题,经过一些繁重的调试后发现本机浏览器和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); }
`CacheManager.class`类不可用 (6认同)
试试这个:方法m = Class.forName("android.webkit.CacheManager").getDeclaredMethod("setCacheDisabled",boolean.class); (2认同)
DennisZhong.. 17
我终于得到了android webview糟糕性能问题的原因.请注意下面的图片......从OnPageStarted到OnPageFinished使用了12秒.因为它应该加载CSS,javascript和... AJAX ...
我注意到JQuery和JQueryMobile需要在Html.So中加载所有DOM结构.如果我在OnPageFinished之后懒惰加载javascript,它应该更快地显示页面.
首先使用setTimeout而不是$(document).ready(function(){}); 在JQuery中.然后使用lazyload javascript文件.
最后的HTML和JavaScript是:
你可以在http://wonko.com/post/painless_javascript_lazy_loading_with_lazyload找到lazyload-min.js
完成后,您可以看到下面的日志图像:
现在,从OnPageStarted到OnPageFinished只需2秒.
我在https://wenzhang.baidu.com/page/view?key=22fe27eabff3251f-1426227431上发布了这篇文章
但它是用中文写的:)
我遇到了类似的问题,经过一些繁重的调试后发现本机浏览器和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); }
我终于得到了android webview糟糕性能问题的原因.请注意下面的图片......从OnPageStarted到OnPageFinished使用了12秒.因为它应该加载CSS,javascript和... AJAX ...
我注意到JQuery和JQueryMobile需要在Html.So中加载所有DOM结构.如果我在OnPageFinished之后懒惰加载javascript,它应该更快地显示页面.
首先使用setTimeout而不是$(document).ready(function(){}); 在JQuery中.然后使用lazyload javascript文件.
最后的HTML和JavaScript是:
你可以在http://wonko.com/post/painless_javascript_lazy_loading_with_lazyload找到lazyload-min.js
完成后,您可以看到下面的日志图像:
现在,从OnPageStarted到OnPageFinished只需2秒.
我在https://wenzhang.baidu.com/page/view?key=22fe27eabff3251f-1426227431上发布了这篇文章
但它是用中文写的:)