¿Cómo debo hacer frente a la persistencia de un WebView Android si mi actividad se destruye mientras que muestra otro?

StackOverflow https://stackoverflow.com/questions/2508008

  •  22-09-2019
  •  | 
  •  

Pregunta

Estoy construyendo una aplicación para Android que se basa en torno a un WebView mejorado (basado en PhoneGap). He mejorado la vista Web para que desde JavaScript se ejecuta dentro puede invocar el selector de contactos nativa para elegir un número de teléfono (que puede ser suministrada por Facebook, por ejemplo).

El problema que tengo es que las carreras de contacto selector de nativos en una actividad en otro proceso y la documentación de Android dicen que mientras que otra actividad está abierta mi actividad puede quedar destruida debido a las limitaciones de memoria. En realidad no he visto que esto suceda en mi solicitud, pero si lo hizo entonces supongo estado de mi vista web sería destruida y el código que estaba esperando el contacto recogido se daría por terminado.

Parece un poco loco que la actividad de solicitar un contacto podría ser destruido mientras que el selector de contactos está abierto. ¿Alguien sabe si esto efectivamente suceda? ¿Hay una manera de mantener el estado de la vista web si lo hace?

Gracias,

-Shaun

¿Fue útil?

Solución

  

¿Alguien sabe si esto lo hace de hecho   pasar?

Se encuentra en el problema simplemente demasiado.

Usted tiene una WebView. Abrir la aplicación de contactos. Mientras el usuario está en la aplicación de contactos, una llamada telefónica entra en juego. Mientras que en la llamada de teléfono (usando un auricular Bluetooth), un mensaje de texto entra, por lo que el usuario abre hasta que a partir de su notificación. Mientras que todavía en la llamada telefónica y los mensajes de texto de distancia, un texto llega con un enlace, por lo que lo golpea y hace subir la aplicación Navegador.

Por este tiempo, su actividad es, sin duda destruido, excepto tal vez en algunos de los teléfonos más recientes que tienen una buena cantidad de memoria RAM.

Ahora, es tan común? No. Sin embargo, esto también tiene nada que ver con la aplicación de contactos - si el usuario pulsa INICIO, en algún momento en el futuro, su actividad puede ser destruido para liberar la memoria RAM, así

.
  

¿Hay una manera de mantener el estado de   la vista web si lo hace?

Eso depende de lo que se tiene en cuenta "el estado de la WebView" que sea. Esto realmente es el trabajo de PhoneGap, si usted está haciendo una aplicación basada en PhoneGap. Por lo tanto, es posible que considere pedirles.

No hay manera de que persista el DOM. Hay formas triviales de persistir la URL (ver onSaveInstanceState()). Y puede haber cosas en el medio que se tiene en cuenta parte de "el estado de la WebView" que puede o no puede ser posible ahorrar.

Otros consejos

La respuesta larga y detallada es un poco complicado, pero básicamente se reduce a unos pocos puntos:

  • Si el sistema operativo Android tiene que ir a la limpieza de las actividades o servicios, se sabe cómo priorizar cuáles deben ir primero. Lo hace en función de si están actualmente en el primer plano (último en irse), en medio de la ejecución de código, a la espera de un resultado, o simplemente sentado inactivo en el fondo (primero en ir). Usted puede estar razonablemente seguro de que si su WebView Actividad puso en marcha el selector de contactos utilizando el startActivityForResult, no va a ser matado
  • Hay todo un sistema para guardar los datos si se mata una actividad, tales como el método onPause (que se activa tan pronto como sus hojas de actividad del primer plano), el método onSaveInstanceState que se llama cuando su actividad está a punto de morir. Lea sobre los que para obtener más información, y el método configurationChanged cuando la orientación de la pantalla cambia. Si usted no ha leído al menos descremada documento de la Actividad del ciclo de vida de la página de desarrolladores, que tiene que hacer eso.
  • Por último, estoy seguro de que esta cuestión se ha abordado muchas veces, pero con diferentes palabras o ligeramente situaciones. Echar un vistazo alrededor, ver qué más se puede encontrar.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top