当前位置:  开发笔记 > 编程语言 > 正文

增强webView性能(应该与本机Web浏览器性能相同)

如何解决《增强webView性能(应该与本机Web浏览器性能相同)》经验,为你挑选了2个好方法。

我的经验是,在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

完成后,您可以看到下面的日志图像:

更改javascript后

现在,从OnPageStarted到OnPageFinished只需2秒.

我在https://wenzhang.baidu.com/page/view?key=22fe27eabff3251f-1426227431上发布了这篇文章

但它是用中文写的:)



1> Guypo..:

我遇到了类似的问题,经过一些繁重的调试后发现本机浏览器和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`类不可用
试试这个:方法m = Class.forName("android.webkit.CacheManager").getDeclaredMethod("setCacheDisabled",boolean.class);

2> DennisZhong..:

我终于得到了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

完成后,您可以看到下面的日志图像:

更改javascript后

现在,从OnPageStarted到OnPageFinished只需2秒.

我在https://wenzhang.baidu.com/page/view?key=22fe27eabff3251f-1426227431上发布了这篇文章

但它是用中文写的:)

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有