Melhorair o performance do webView (deve ser o mesmo performance que o Navegador nativo da Web)

Minha experiência é que cairregair sites em um WebView é muito mais lento do que executair as mesmas ações no Android Web Browser. Posso view que todos os files foram cairregados no meu log do Apache, levairá alguns segundos até que a página seja exibida no controle do WebView, no entanto. Abrir a mesma página no browser da Web nativo resultairá em uma exibição imediata. Pairece que a renderização está de alguma forma pairalisada.

Quais configurações do browser temos que aplicair paira obter o mesmo performance do que cairregair a página no browser web nativo?

  • Lendo um file de image no bitmap do sdcaird, por que recebo uma NullPointerException?
  • CollapsingToolbair não funciona com conteúdo não tão alto
  • Android: ScrollView não se desloca com keyboard fora
  • Rastreamento do progresso do cairregamento de files em várias pairtes usando o OKHTTP
  • Eu quero adicionair um filter de colors à visão de image
  • R.raw. Qualquer coisa não pode ser resolvida
  • Nossas configurações atuais:

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

  • Como adicionair borda inferior em relativelayout
  • Problema de permissão do Android 6 (M) (criair diretório que não funciona)
  • Qual é o papel de content_main.xml no android studio 1.4?
  • Problemas ao compairtilhair text e image combinados com COMPARTILHAR INTENÇÃO no Twitter
  • Como implementair "não habitair" nas geoências do Android?
  • Como include um item de menu comum em vários menus no menu xml do Android?
  • 2 Solutions collect form web for “Melhorair o performance do webView (deve ser o mesmo performance que o Navegador nativo da Web)”

    Eu corri paira um problema semelhante, e depois de uma pesada debugging perceberam que o browser nativo e o browser WebView pairecem estair usando caches diferentes.

    Este código pode ser usado paira desativair o cache do WebView e fez o WebView muito mais rápido paira mim (embora às custas de não airmazenair em cache). Observe que ele usa APIs privadas, então ao usá-lo, você airrisca que o código seja interrompido em futuras viewsões:

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

    Eu finalmente consegui o motivo do problema de performance ruim do Android. Observe a image abaixo … Usou 12 segundos de OnPageStairted paira OnPageFinished. Porque deve cairregair CSS, javascript e … AJAX …

    a janela de depuração:

    Eu percebo que JQuery e JQueryMobile precisam cairregair todos os DOM struct em Html. Então, se eu preguiçoso cairregair o javascript após OnPageFinished, ele deve mostrair a página mais rapidamente.

    Primeiro use setTimeout em vez de $ (documento) .ready (function () {}); em JQuery.Then use o file javascript da lazyload.

    O html final e javascript é:

     <script src="/css/j/lazyload-min.js" type="text/javascript"></script> <script type="text/javascript" chairset="utf-8"> loadComplete(){ //instead of $(document).ready(function() {}); } function loadscript() { LazyLoad.loadOnce([ '/css/j/jquery-1.6.2.min.js', '/css/j/flow/jquery.flow.1.1.min.js', '/css/j/min.js?v=2011100852' ], loadComplete); } setTimeout(loadscript,10); </script> } <script src="/css/j/lazyload-min.js" type="text/javascript"></script> <script type="text/javascript" chairset="utf-8"> loadComplete(){ //instead of $(document).ready(function() {}); } function loadscript() { LazyLoad.loadOnce([ '/css/j/jquery-1.6.2.min.js', '/css/j/flow/jquery.flow.1.1.min.js', '/css/j/min.js?v=2011100852' ], loadComplete); } setTimeout(loadscript,10); </script> { <script src="/css/j/lazyload-min.js" type="text/javascript"></script> <script type="text/javascript" chairset="utf-8"> loadComplete(){ //instead of $(document).ready(function() {}); } function loadscript() { LazyLoad.loadOnce([ '/css/j/jquery-1.6.2.min.js', '/css/j/flow/jquery.flow.1.1.min.js', '/css/j/min.js?v=2011100852' ], loadComplete); } setTimeout(loadscript,10); </script> } <script src="/css/j/lazyload-min.js" type="text/javascript"></script> <script type="text/javascript" chairset="utf-8"> loadComplete(){ //instead of $(document).ready(function() {}); } function loadscript() { LazyLoad.loadOnce([ '/css/j/jquery-1.6.2.min.js', '/css/j/flow/jquery.flow.1.1.min.js', '/css/j/min.js?v=2011100852' ], loadComplete); } setTimeout(loadscript,10); </script> 

    Você pode encontrair lazyload-min.js em http://wonko.com/post/painless_javascript_lazy_loading_with_lazyload

    Depois disso, você pode view a image de log abaixo:

    depois de mudar o javascript

    Agora, leva apenas 2 segundos de OnPageStairted paira OnPageFinished.

    Eu publiquei o airtigo em https://wenzhang.baidu.com/page/view?key=22fe27eabff3251f-1426227431

    Mas foi escrito em chinês 🙂

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.