tutorial studio programacion para intuitivas guia crear con como biblia aplicaciones android-intent android-activity lifecycle lifetime activity-lifecycle

android-intent - studio - manual de java para android



Evitar que la actividad de Android se vuelva a crear al apagar la pantalla (3)

  1. Cree la vista en Application.onCreate ().
  2. Agregue la vista a un diseño en Activity.onCreate ().
  3. Elimine la vista del diseño en Activity.onDestroy ().

Los detalles están aquí: Adjuntar / separar la vista de Android del diseño

¿Cómo evitar que una actividad se vuelva a crear al apagar la pantalla?

Lo que hago

  1. Arranca Bejewels y ve a la pantalla de joyería.
  2. Pulse brevemente el botón de encendido. La pantalla está apagada, pero el dispositivo no.
  3. Presione el botón de encendido de nuevo.

Lo que veo

La misma pantalla que antes de apagar la pantalla.

En el caso de mi aplicación (trivial, solo una aplicación web con una única vista web) el escenario es el siguiente:

Lo que hago

  1. Iniciar mi aplicación. El método de actividad onCreate () carga una URL en el WebView.
  2. Pulse brevemente el botón de encendido. La pantalla está apagada, pero el dispositivo no.
  3. Presione el botón de encendido de nuevo.

Lo que veo

El WebView está recargando la página.

Lo que esperaba

Al igual que en el caso de Bejewels, quiero ver la misma pantalla, que para mi aplicación es la página en su estado anterior: se ejecutan los scripts, se rellenan los campos de un formulario, etc.

La depuración mostró que estaba equivocado (en una pregunta anterior) y onDestroy () y onCreate () se llaman uno por uno cuando la pantalla está encendida. Y como todavía escucho una música que se reproduce con un guión, cuando la pantalla está apagada, parece que tanto la actividad como la WebView existen hasta que presiono el botón de encendido nuevamente.

Lo que intenté.

  1. android: alwaysRetainTaskState = "true" El mismo comportamiento.
  2. Leer sobre intenciones (en vano, simplemente no entendí cómo se aplican a mi situación).
  3. Utilizando PhoneGap. Se comporta de manera diferente: solo mata toda la aplicación al presionar el botón de encendido. Esto es mejor, pero no el mejor.

La solución a este problema puede ser la misma que se describe aquí: onDestroy se llama cada vez que se enciende la pantalla

Parece que su actividad se está reiniciando debido a cambios en la configuración, consulte http://developer.android.com/guide/topics/resources/runtime-changes.html . Lo más común es cuando la aplicación está en modo horizontal (como la mayoría de los juegos) y luego se activa el bloqueo de la pantalla al tocar el botón de encendido. El bloqueo de pantalla está en modo vertical y, por lo tanto, activa un cambio en la orientación que activa la actividad para que se reinicie.

Este comportamiento puede ser anulado agregando:

android:configChanges="orientation|keyboardHidden"

... a su archivo de manifiesto si está apuntando a un nivel de API inferior a 13. O

android:configChanges="orientation|keyboardHidden|screenSize"

... si está apuntando a un nivel de API superior a 13.

Tenga en cuenta que es posible que tenga que ir a proyecto-> propiedades y actualizar el objetivo de construcción del proyecto. ''screenSize'' no se reconocerá si su objetivo de compilación es inferior a 13.

Puede ser un cambio de configuración diferente que está causando que la actividad se reinicie. El siguiente enlace proporciona una lista de los posibles cambios de configuración: http://developer.android.com/guide/topics/manifest/activity-element.html#config