Android WebView: bloqueo tras la carga de url

Al cargar una url con mi webView, la aplicación se bloquea después de unos segundos (sin registro de errores …).

Mi código :

wv = new WebView(this); wv.clearCache(true); wv.clearHistory(); wv.getSettings().setJavaScriptEnabled(true); wv.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); wv.setDownloadListener(new DownloadListener() { @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setType(mimetype); intent.setData(Uri.parse(url)); startActivity(intent); } }); wv.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO change for other domains URL nextUrl; try { nextUrl = new URL(url.toString()); }catch (MalformedURLException e){ nextUrl = null; } if(nextUrl !=null && nextUrl.getHost().toString().equals(DOMAIN)) { Toast.makeText(mContext, nextUrl.getHost().toString(), Toast.LENGTH_SHORT).show(); view.loadUrl(url); return false; }else{ Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(browserIntent); return true; } } }); wv.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { MainActivity.this.setProgress(progress * 1000); } public boolean onConsoleMessage(ConsoleMessage cm) { Log.d("MyProject: WebView: ", cm.message() + " -- From line " + cm.lineNumber() + " of " + cm.sourceId() ); return true; } }); wv.loadUrl(URL); setContentView(wv); 

Iniciar sesión :

 01-20 18:00:50.798 7233-7288/ my.appli.com I/dalvikvm﹕ "WebViewCoreThread" prio=5 tid=12 NATIVE 01-20 18:00:50.798 7233-7288/ my.appli.com I/dalvikvm﹕ | group="main" sCount=0 dsCount=0 obj=0x419a0be0 self=0x68f6c750 01-20 18:00:50.798 7233-7288/ my.appli.com I/dalvikvm﹕ | sysTid=7288 nice=10 sched=0/0 cgrp=apps/bg_non_interactive handle=1773204176 01-20 18:00:50.799 7233-7288/ my.appli.com I/dalvikvm﹕ | state=R schedstat=( 0 0 0 ) utm=2326 stm=119 core=0 01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ #00 pc 000012a0 /system/lib/libcorkscrew.so (unwind_backtrace_thread+27) 01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ #01 pc 0006235c /system/lib/libdvm.so (dvmDumpNativeStack(DebugOutputTarget const*, int)+35) 01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ #02 pc 000561bc /system/lib/libdvm.so (dvmDumpThreadEx(DebugOutputTarget const*, Thread*, bool)+303) 01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ #03 pc 00056256 /system/lib/libdvm.so (dvmDumpThread(Thread*, bool)+25) 01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ #04 pc 000478c8 /system/lib/libdvm.so (dvmDebuggerSignalHandler(int, siginfo*, void*)+15) 01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ at android.webkit.JWebCoreJavaBridge.sharedTimerFired(Native Method) 01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ at android.webkit.JWebCoreJavaBridge.fireSharedTimer(JWebCoreJavaBridge.java:92) 01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ at android.webkit.JWebCoreJavaBridge.handleMessage(JWebCoreJavaBridge.java:108) 01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ at android.os.Handler.dispatchMessage(Handler.java:99) 01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ at android.os.Looper.loop(Looper.java:137) 01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:900) 01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ at java.lang.Thread.run(Thread.java:856) 01-20 18:00:50.841 7233-7288/ my.appli.com I/dalvikvm﹕ [ 01-20 18:00:50.841 7233: 7288 F/libc ] Fatal signal 11 (SIGSEGV) at 0x0000001c (code=1), thread 7288 (WebViewCoreThre) 

He experimentado el mismo problema (bloqueo) al intentar cargar la misma URL con el navegador predeterminado de mi dispositivo Android (4.1).

La URL que quiero cargar es:

http://presentbox.jp

Gracias por tu ayuda.

— EDIT 1

He intentado con un teléfono Android reciente (4.4) y la aplicación no se estrelló.

Para el propósito de depuración, he eliminado todas las partes pesadas de mi sitio web (imágenes, js, …) pero la aplicación sigue fallando después de desplazarse hacia abajo.

// Edit : ¡Lo encontré! El culpable en la línea 2540 en general.css :

 #head-search-form{display: block;margin: 30px 0;} 

Más específicamente, es la display: block que de alguna manera hace que el WebView choque. No soy mucho de un desarrollador web, pero el intercambio de valor con flex o none parece dejar de resultar en un accidente (y no podía decir la diferencia visual en un dispositivo móvil). ¡Espero que ayude!


He configurado un pequeño proyecto de prueba y he podido reproducir el bloqueo en un dispositivo (virtual) Android 4.1. Solo parece que ocurre al desplazarse, después de que la página se haya cargado completamente. Es decir, puede ampliar el cajón del menú sin ningún problema, siempre y cuando no comience a desplazarse …

Pude reducir el culpable a general.css . Tan pronto como no se carga esa hoja de estilo, la página funcionará y se desplazará bien, pero por supuesto no se verá muy bonita.

Como general.css cuenta con más de 3300 líneas, sugiero que inicie la búsqueda de la causa real corrigiendo los errores indicados por el W3C CSS Validator . Si eso no resuelve el problema, inicie la deshabilitación de reglas de estilo relacionadas con la rejilla de fotos, especialmente cualquier cosa que implique animación / transformación. Si puedo encontrar el tiempo, puedo tener un ir en esto yo también.

Sólo para su información, aquí hay un rastreo de pila más extenso. Alguien más puede ser capaz de encontrar algunos indicadores más en allí también.

 mh.test.webview A/libc: Fatal signal 11 (SIGSEGV) at 0x00001f08 (code=1), thread 11949 (WebViewCoreThre) I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** I/DEBUG: Build fingerprint: 'generic/vbox86p/vbox86p:4.1.1/JRO03S/eng.buildbot.20151117.133415:userdebug/test-keys' I/DEBUG: pid: 11930, tid: 11949, name: WebViewCoreThre >>> mh.test.webview <<< I/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00001f08 I/DEBUG: eax b84902e4 ebx 9ba8b488 ecx b804b028 edx b83c0224 I/DEBUG: esi b8490360 edi b804b028 I/DEBUG: xcs 00000073 xds 0000007b xes 0000007b xfs 00000000 xss 0000007b I/DEBUG: eip 00001f08 ebp 997b9748 esp 997b96dc flags 00010296 I/DEBUG: #00 pc 00001f08 <unknown> I/DEBUG: #01 pc 00344fd6 /system/lib/libwebcore.so (WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WTF::HashMap<WebCore::RenderLayer*, WebCore::IntRect, WTF::PtrHash<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::IntRect> >*, WebCore::CompositingState&, bool&)+38) I/DEBUG: #02 pc 003454bb /system/lib/libwebcore.so (WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WTF::HashMap<WebCore::RenderLayer*, WebCore::IntRect, WTF::PtrHash<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::IntRect> >*, WebCore::CompositingState&, bool&)+1291) I/DEBUG: #03 pc 003454bb /system/lib/libwebcore.so (WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WTF::HashMap<WebCore::RenderLayer*, WebCore::IntRect, WTF::PtrHash<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::IntRect> >*, WebCore::CompositingState&, bool&)+1291) I/DEBUG: #04 pc 003454bb /system/lib/libwebcore.so (WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WTF::HashMap<WebCore::RenderLayer*, WebCore::IntRect, WTF::PtrHash<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::IntRect> >*, WebCore::CompositingState&, bool&)+1291) I/DEBUG: #05 pc 003454bb /system/lib/libwebcore.so (WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WTF::HashMap<WebCore::RenderLayer*, WebCore::IntRect, WTF::PtrHash<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::RenderLayer*>, WTF::HashTraits<WebCore::IntRect> >*, WebCore::CompositingState&, bool&)+1291) I/DEBUG: #06 pc 00346c55 /system/lib/libwebcore.so (WebCore::RenderLayerCompositor::updateCompositingLayers(WebCore::CompositingUpdateType, WebCore::RenderLayer*)+213) I/DEBUG: #07 pc 0020e727 /system/lib/libwebcore.so (WebCore::FrameView::layout(bool)+1159) I/DEBUG: #08 pc 0068126f /system/lib/libwebcore.so (WebCore::Document::updateLayout()+127) I/DEBUG: #09 pc 0068bbda /system/lib/libwebcore.so (WebCore::Document::updateLayoutIgnorePendingStylesheets()+90) I/DEBUG: #10 pc 005ead53 /system/lib/libwebcore.so (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue(int, WebCore::EUpdateLayout) const+467) I/DEBUG: #11 pc 005f35e9 /system/lib/libwebcore.so (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue(int) const+41) I/DEBUG: #12 pc 005e68d7 /system/lib/libwebcore.so (WebCore::CSSComputedStyleDeclaration::getPropertyValue(int) const+55) I/DEBUG: #13 pc 006297f8 /system/lib/libwebcore.so (WebCore::CSSStyleDeclaration::getPropertyValue(WTF::String const&)+88) I/DEBUG: #14 pc 004d9475 /system/lib/libwebcore.so (WebCore::CSSStyleDeclarationInternal::getPropertyValueCallback(v8::Arguments const&)+181) I/DEBUG: #15 pc 000efdd4 <unknown> I/DEBUG: #16 pc 0005cf6b <unknown> I/DEBUG: #17 pc 000bb32f <unknown> I/DEBUG: #18 pc 00003b41 <unknown> I/DEBUG: #19 pc 000f47ce <unknown> I/DEBUG: #20 pc 0001a5a3 <unknown> I/DEBUG: #21 pc 000065e3 <unknown> I/DEBUG: #22 pc 00003b41 <unknown> I/DEBUG: #23 pc 00024c59 <unknown> I/DEBUG: #24 pc 00024dad <unknown> I/DEBUG: #25 pc 00003b41 <unknown> I/DEBUG: #26 pc 0001a59c <unknown> I/DEBUG: #27 pc 000d7172 <unknown> I/DEBUG: #28 pc 0001a5a3 <unknown> I/DEBUG: #29 pc 000d40ed <unknown> I/DEBUG: #30 pc 00017bf9 <unknown> I/DEBUG: #31 pc 00008c2a <unknown> I/DEBUG: 997b969c 00000000 I/DEBUG: 997b96a0 00000000 I/DEBUG: 997b96a4 00000000 I/DEBUG: 997b96a8 00000000 I/DEBUG: 997b96ac 00000000 I/DEBUG: 997b96b0 00000000 I/DEBUG: 997b96b4 00000000 I/DEBUG: 997b96b8 00000000 I/DEBUG: 997b96bc 00000000 I/DEBUG: 997b96c0 00000000 I/DEBUG: 997b96c4 00000000 I/DEBUG: 997b96c8 00000000 I/DEBUG: 997b96cc 00000000 I/DEBUG: 997b96d0 00000000 I/DEBUG: 997b96d4 00000000 I/DEBUG: 997b96d8 00000000 I/DEBUG: #00 997b96dc 9ad1cdd4 /system/lib/libwebcore.so (WebCore::RenderLayer::updateLayerPosition()+52) I/DEBUG: 997b96e0 b84902e4 [heap] I/DEBUG: 997b96e4 b8490090 [heap] I/DEBUG: 997b96e8 0000000f I/DEBUG: 997b96ec 0000002f I/DEBUG: 997b96f0 b8490090 [heap] I/DEBUG: 997b96f4 00000001 I/DEBUG: 997b96f8 9ad2204e /system/lib/libwebcore.so (WebCore::RenderLayer::repaintIncludingNonCompositingDescendants(WebCore::RenderBoxModelObject*)+14) I/DEBUG: 997b96fc b827f428 [heap] I/DEBUG: 997b9700 9ba8b488 /system/lib/libwebcore.so I/DEBUG: 997b9704 b8490090 [heap] I/DEBUG: 997b9708 997b9748 [stack:11949] I/DEBUG: 997b970c 9ad35d38 /system/lib/libwebcore.so (WebCore::RenderLayerCompositor::updateBacking(WebCore::RenderLayer*, WebCore::RenderLayerCompositor::CompositingChangeRepaint)+344) I/DEBUG: 997b9710 b8490014 [heap] I/DEBUG: 997b9714 b848fe3c [heap] I/DEBUG: 997b9718 00000012 I/DEBUG: ........ ........ I/DEBUG: #01 997b9750 b8490360 [heap] I/DEBUG: 997b9754 b8490090 [heap] I/DEBUG: 997b9758 00000000 I/DEBUG: 997b975c 997b98e0 [stack:11949] I/DEBUG: 997b9760 997ba84f [stack:11949] I/DEBUG: 997b9764 b843a9e4 [heap] I/DEBUG: 997b9768 00000034 I/DEBUG: 997b976c 00000180 I/DEBUG: 997b9770 b848fe3c [heap] I/DEBUG: 997b9774 b85257f8 [heap] I/DEBUG: 997b9778 9ace0300 /system/lib/libwebcore.so (WebCore::RenderBox::dirtyLineBoxes(bool)+80) I/DEBUG: 997b977c 43400000 I/DEBUG: 997b9780 b83fe51c [heap] I/DEBUG: 997b9784 997b9788 [stack:11949] I/DEBUG: 997b9788 004a0000 I/DEBUG: 997b978c b848feb8 [heap] I/DEBUG: ........ ........ I/DEBUG: #02 997b9aa0 b804b028 [heap] I/DEBUG: 997b9aa4 b8490360 [heap] I/DEBUG: 997b9aa8 00000000 I/DEBUG: 997b9aac 997b9c30 [stack:11949] I/DEBUG: 997b9ab0 997ba84f [stack:11949] I/DEBUG: 997b9ab4 b83fe51c [heap] I/DEBUG: 997b9ab8 00000000 I/DEBUG: 997b9abc 00000001 I/DEBUG: 997b9ac0 b86fd038 [heap] I/DEBUG: 997b9ac4 b86fd368 [heap] I/DEBUG: 997b9ac8 997b9b48 [stack:11949] I/DEBUG: 997b9acc 9adac54a /system/lib/libwebcore.so (WebCore::TransformState::move(int, int, WebCore::TransformState::TransformAccumulation)+58) I/DEBUG: 997b9ad0 b83fe678 [heap] I/DEBUG: 997b9ad4 b8294d4c [heap] I/DEBUG: 997b9ad8 00580b05 I/DEBUG: 997b9adc b83fe770 [heap] I/DEBUG: ........ ........ I/DEBUG: (no map below) I/DEBUG: (no map for address) I/DEBUG: 20c1e000-20c1f000 

¿Está utilizando una versión personalizada de Android? un mod específico? si lo hace – siempre existe la posibilidad de que el problema sea el resultado de esa ROM. Ha habido casos en los que un WebView ha experimentado problemas en la versión específica de Android o en ROMs específicas. Algunos vínculos: https://code.google.com/p/chromium/issues/detail?id=481420 http://googlechromereleases.blogspot.com.au/2015/04/android-webview-stable-update.html http : //forum.xda-developers.com/verizon-htc-one-m8/help/android-webviewer-update-huge-turd-t3091192/post60333480#post60333480 Sistema Android WebView bloquea aplicaciones de Android! "Las piedras sepulcrales están deshabilitadas en las compilaciones de usuarios de JB MR2 +"

Compruebe si WebView está actualizado. si es – desinstale las actualizaciones y compruebe si el problema todavía está allí. Si no está actualizado, realice una actualización y compruebe si el problema persiste. la mayoría de las posibilidades no lo hará.

Además – este problema probablemente no sucederá mucho. en la mayoría de los dispositivos con los que he trabajado, WebView es fiable y estable.

buena suerte.

Intente eliminar estas líneas:

 wv.clearCache(true); wv.clearHistory(); wv.setDownloadListener(new DownloadListener() { @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setType(mimetype); intent.setData(Uri.parse(url)); startActivity(intent); } }); wv.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { MainActivity.this.setProgress(progress * 1000); } public boolean onConsoleMessage(ConsoleMessage cm) { Log.d("MyProject: WebView: ", cm.message() + " -- From line " + cm.lineNumber() + " of " + cm.sourceId() ); return true; } }); 

Es posible que su versión tenga problema con el cliente de cromo

Tuve un problema similar después de cargar un objeto de Google Maps o cualquier objeto de lona 2d en una vista web en mi dispositivo Nexus 5X y Nexus 6P con Android 6.0.x.

Sin embargo, parece que esto se relaciona con un error de hardware informado aquí: https://code.google.com/p/chromium/issues/detail?id=541145

Una solución o solución parece estar en su camino en próximas versiones de vista web.

Hasta que llegue la nueva versión de webview, tuve que ir con la solución propuesta de configurar la webview para renderizar software. Esto hace que el mapa lento pero accidente dosent al menos.

 if(isNexus5xOr6p() && android.os.Build.VERSION.SDK_INT >= 11) webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); public boolean isNexus5xOr6p() { if(getDeviceName().contains("nexus 6p") || getDeviceName().contains("nexus 5x")) return true; else return false; } public String getDeviceName() { String manufacturer = Build.MANUFACTURER; String model = Build.MODEL; if (model.startsWith(manufacturer)) { return model.toLowerCase(); } return (manufacturer + " " + model).toLowerCase(); } 
  • El banner de instalación de la aplicación no funciona
  • Android WebView ZoomManager.onSizeChanged NullPointerException
  • Reproducción de un video local de aplicación (.mp4) en una vista web
  • Manejar url desde la vista web onCreateWindow
  • ¿Cómo maneja un servidor las solicitudes de servicio web de varios clientes?
  • Cómo acceder a mi 127.0.0.1:8000 desde Android tablet
  • ¿Necesito aplicaciones separadas de Twitter para la integración con aplicaciones de iOS y Android + Web?
  • Android WebView eliminarCookie
  • Giro a la izquierda / derecha de Android en la actividad de WebView (haciendo clic en vínculos y desplazamiento vertical)
  • Android: Obtener la posición de desplazamiento de un WebView
  • Android WebView no sólo de vídeo audio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.