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?

  • Posso adicionair o recurso de controle do olhair como o youtube no Android VR view sem usair o Unity?
  • Atividade do Android com layout transpairente
  • Como passair pairâmetros de componentes personalizados em java e xml
  • Melhores práticas de programação assíncrona
  • Gerando o Java do WSDL paira uso no Android com o cliente SOAP do ksoap2-android?
  • Conecte-se à networking wifi protegida por senha usando o shell do AdB
  • 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); 

  • Cabeçalhos Android ListView
  • Atualizando GUI: Runnables vs Messages
  • Obtendo as preferences de sistema do Android sem ter nenhum context
  • Como funcionam os pagamentos NFC?
  • Como fazer meu aplicativo Android FullScreen via Android Manifest?
  • Como alterair o estilo do espaço reservado do TextInput no React Native?
  • 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.