HTC One X – Webview se convierte en blanco / vacío después del toque

Tengo una aplicación de Android que tiene cuadro de texto para la búsqueda, algunos botones, webviews (1 visibles 2 invisibles) y un adview admob. La aplicación sólo busca en algunos sitios especiales y funciona muy bien en el emulador, los dispositivos Samsung Galaxy. Pero tengo problemas con HTC One X (no sé sobre otros modelos de HTC).

El problema es que al hacer clic en un botón de búsqueda, la vista web carga la página. A continuación, "a veces" cuando intenta tocar incluso para desplazarse, la vista web simplemente vuelve al área totalmente blanca con barras de desplazamiento. Esto ocurre especialmente después de la actualización de anuncios. Incluso a veces el fondo del anuncio y el área de texto se convierten totalmente en blanco, por lo que no son legibles. En el anuncio sólo flecha azul y las imágenes de llamada de teléfono azul permanecer visibles!

¿Alguien tiene problemas como este, y cualquier solución? gracias por adelantado.

Aquí está mi diseño xml:

<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff" android:orientation="vertical" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/layoutDashboard" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:background="@drawable/border_shape" android:orientation="vertical" android:paddingTop="1sp" > <EditText android:id="@+id/editxtKeyword" android:layout_width="fill_parent" android:layout_height="43dp" android:layout_marginLeft="1dp" android:layout_marginRight="1dp" android:layout_marginTop="2dp" android:ems="10" android:hint="@string/editxtKeyword_hint" android:singleLine="true" > </EditText> <HorizontalScrollView android:id="@+id/horizontalScrollView1" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_gravity="center_vertical" android:layout_weight="0.30" android:paddingBottom="2dp" android:paddingLeft="1dp" android:scrollbars="none" > <LinearLayout android:id="@+id/layoutButtons" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="center_vertical" android:layout_marginTop="0dp" android:layout_marginBottom="1dp" android:layout_marginLeft="1dp" android:layout_marginRight="1dp" android:orientation="horizontal" > < <Button android:id="@+id/btnAk" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_margin="1dp" android:background="@drawable/custom_button_shape" android:text="asd" /> <Button android:id="@+id/btnCm" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_margin="1dp" android:background="@drawable/custom_button_shape" android:text="csm" /> </LinearLayout> </HorizontalScrollView> </LinearLayout> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > <WebView android:id="@+id/webV" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@+id/linlaylay1" android:visibility="visible" /> <WebView android:id="@+id/webVAnalytics" android:layout_width="1dp" android:layout_height="0dp" android:visibility="invisible" /> <WebView android:id="@+id/WebVSahibinden" android:layout_width="1dp" android:layout_height="0dp" android:visibility="invisible" /> <LinearLayout android:id="@+id/linlaylay1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_margin="0dp" android:orientation="vertical" android:padding="0dp" > <com.google.ads.AdView android:id="@+id/adViewSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|top" ads:adSize="BANNER" ads:adUnitId="a123123" ads:loadAdOnCreate="true" ads:testDevices="TEST_EMULATOR" /> </LinearLayout> </RelativeLayout> </LinearLayout> <LinearLayout android:id="@+id/layoutProgress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="top|center_horizontal" android:layout_marginBottom="50dp" android:layout_marginTop="5dp" android:background="@drawable/progress_shape" android:padding="2dp" android:visibility="invisible" > <TextView android:id="@+id/lblLoading" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="2dp" android:text="@string/msg_loading" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#000000" /> <ImageButton android:contentDescription="@string/dialog_cancel" android:id="@+id/btnStop" android:layout_width="30dp" android:layout_height="30dp" android:src="@drawable/stop" /> </LinearLayout> </FrameLayout> 

3 Solutions collect form web for “HTC One X – Webview se convierte en blanco / vacío después del toque”

Existen muchos problemas al mostrar vistas aceleradas de hardware encima de cada uno. Volvería a trabajar su diseño para no superponer las vistas web o vistas de desplazamiento, o desactivar la aceleración de hardware.

Un error conocido

Puede desactivar la aceleración de hardware en su WebView, pero asegúrese de hacerlo de una manera que no rompa los dispositivos antiguos:

 if(android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.HONEYCOMB){ //mWebView is some WebView mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); } 

Advertencias

  • Los videos no se reproducen en el navegador
  • El desplazamiento no será casi tan suave

Esto se arregla en Jelly Bean según el error pero no he podido verificarlo personalmente.

He visto este problema con vistas únicas en teléfonos HTC. Uno de los comentarios en este subproceso hace algunas sugerencias para ayudar a optimizar el rendimiento de WebView. El error es sobre transformaciones en 3D, pero he encontrado que las técnicas del comentario son útiles para WebViews en general.

Esta presentación en Google I / O 2012 también proporciona una buena información sobre el tema de WebViews, en general.

Ambos sugieren que el contenido dinámico se coloque en una "capa". Esto significa asignar esta regla CSS al elemento:

  -webkit-transform: translate3d(0, 0, 0); 

Al aplicar esta regla, Android "le dice al navegador que precompile la capa en su propia textura para que pueda ser animada más tarde para (casi) libre" Este comportamiento no es gratis – puede consumir más memoria por lo que lo aplicaría de manera juiciosa. La presentación adjunta hace un buen trabajo explicando por qué.

En mi caso, pude evitar una "pantalla blanca" al aplicar esta regla a un DIV que envuelve toda la página. A veces, la página se vuelve blanca durante un segundo y luego se procesa el contenido. No he visto la página "blanca" persistir para siempre como lo hice antes de aplicar esta técnica. No vi un consumo de memoria fuera de control. YMMV.

También sugiero que haga lo que pueda para simplificar su diseño. Más fácil decirlo que hacerlo, pero algunas buenas sugerencias se pueden encontrar en los documentos .

  • WebView carga el sitio web cuando está en línea, carga el archivo local cuando está fuera de línea
  • Android webview html5 vídeo autoplay no funciona en android 4.0.3
  • Cómo jugar auto iframe youtube en webview android
  • El teclado flexible de Android oculta las entradas de CordovaWebView cuando está en pantalla completa
  • Mostrar página html que tiene algún objeto .swf con él
  • WebView y HTML5 <video>
  • ¿WebView saveState () preserva variables / entorno de JavaScript?
  • El teclado Android no se muestra al hacer clic en la entrada en la vista web
  • Android WebView parece ignorar la información de "vista gráfica" en las páginas web
  • Almacenamiento en caché en la vista web de Android
  • Extracto de Android WebView HTML
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.