¿Cómo evitar el reinicio de las actividades al rotar la pantalla en Android?
- Andrés Cruz

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:

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á.
Acepto recibir anuncios de interes sobre este Blog.
Cuando se gira o rota la pantalla del dispositivo el método OnCreate es invocado y por ende se reinicia, en esta entrada veremos como evitar este reinicio.
- Andrés Cruz