viernes, 6 de febrero de 2015

Como evitar reinicio de actividad al girar el dispositivo.

Cuando cambiamos la orientación de nuestro dispositivo, nuestra actividad se reinicia y se vuelve a crear. Esto puede resultar molesto cuando, por ejemplo, tenemos un componente WebView en nuestra aplicación, en el que al girar el dispositivo se volvería a cargar la web.

Para evitar esto, en el AndroidManifest dentro de la etiqueta <activity> de nuestra actividad debemos añadir la siguiente línea de código:

android:configChanges="orientation|screenSize"

Como bien podemos consultar en la documentación de Android, el parámetro orientation evita que la actitividad se reinicie al girar el dispositivo, y el parámetro screenSize evita también que se recargue la pantalla al cambiar la relación de aspecto de nuestra pantalla (en la que se cambia la disposición de nuestros controles). Aunque ésto parezca redundante, hay nuevos dispositivos como por ejemplo los relojes Android Wear cuya pantalla tiene una relación de aspecto 1:1 y esta no varía al girar el dispositivo. Además también hay veces que cambiamos la relación de aspecto sin girar nuestro dispositivo, como cuando le damos a un vídeo que se vea a pantalla completa.

Otro parámetro interesante que podemos añadir además de orientation y screenSize es keyboardHidden para evitar que nuestra actividad se reinicie al mostrar y ocultar el teclado.

3 comentarios:

  1. Gracias, Adrián. Esta información no estaba documentada!!!

    ResponderEliminar
  2. Excelente! Más que útil. Me solucionó de raíz.

    ResponderEliminar
  3. Esto puede resultar molesto cuando, por ejemplo, tenemos un componente WebView en nuestra aplicación, en el que al girar el dispositivo se volvería a cargar la web.
    ---------------------------
    Vaya que resulta irritante esa característica, ya lo implementé en mi proyecto y funcionó a las mil maravillas, muchísimas gracias.

    ResponderEliminar