¿Cómo evitar el reinicio de las actividades al rotar la pantalla en Android?

- Andrés Cruz

In english

¿Cómo evitar el reinicio de las actividades al rotar la pantalla en Android?

Muchas veces al momento de probar nuestra aplicación Android que estamos desarrollando, ya sea en el emulador incorporado por el ADT o en un dispositivo físico/real; podemos ver que cuando rotamos o giramos la pantalla, las actividades se reinician, trayendo como consecuencia que:

  • Se borren los textos en los campos.
  • Se eliminen ciertas configuraciones o estados de las actividades.

Entre otros; esto se debe a que cuando se gira o rota la pantalla del dispositivo, el método OnCreate (que pertenece al ciclo de vida de una aplicación Android -ver ciclo de vida de las actividades en Android-) es nuevamente invocado siguiendo el ciclo de vida básico de un aplicación Android y por ende se reinicia; una pequeña sección de código en la configuración del AndroidManifest permite solventar este inconveniente, indicando cuáles actividades deseamos que se reinicien y cuales, para ello hay que agregar el siguiente atributo en el tag activity:

android:configChanges="screenSize|orientation"

Dando un pequeño ejemplo más completo de lo anteriormente explicado:

<activity android:name="com.cuc.cacu.MyTourActivity" android:configChanges="screenSize|orientation"></activity>

¿Qué significa cada uno de estos atributos?

  • orientation: La orientación de la pantalla ha cambiado; o lo que es lo mismo, el usuario ha rotado la pantalla.
  • screenSize: Se presenta cuando cambias la resolución o el aspecto de tu pantalla (16:9 por 9:16 por citar un ejemplo); es decir, cuando cambias entre landscape y portrait (rotas o giras la pantalla).

Más información sobre las configuraciones anteriores:

¿Por qué no configurar todas las actividades para que no se reinicien por defecto?

Depende de cómo estén configuremos nuestras actividades; como podrás saber, al momento de diseñar una actividad para múltiples resoluciones y posiciones de pantalla (landscape/portrait -ver el siguiente ejemplo en un dispositivo móvil si no sabes cual es la diferencia-) puede que necesitemos definir múltiples layouts por actividad:

multiple layouts en android

Lo que significa que si deshabilitados el reinicio de una actividad que presenta múltiples layouts y rotamos (giramos) el dispositivo móvil, el layout no se actualizará.

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz En Udemy

Acepto recibir anuncios de interes sobre este Blog.