Fondo rapido
De manera predeterminada, cuando ocurren ciertos cambios de configuración clave en Android (un ejemplo común es un cambio de orientación), Android reinicia completamente la Actividad en ejecución para ayudarlo a adaptarse a dichos cambios.
Cuando define android:configChanges="keyboardHidden|orientation"
en su AndroidManifest, le está diciendo a Android: "No realice el restablecimiento predeterminado cuando se extrae el teclado o se gira el teléfono; quiero manejar esto yo mismo. Sí, sé lo que estoy haciendo "
¿Es esto algo bueno? Pronto veremos ...
¿Sin preocupaciones?
Una de las ventajas con las que comienza es que hay:
no tiene que preocuparse por su actividad rotada
En muchos casos, las personas creen erróneamente que cuando tienen un error generado por un cambio de orientación ("rotación"), simplemente pueden solucionarlo introduciéndolo android:configChanges="keyboardHidden|orientation"
.
Sin embargo, android: configChanges = "keyboardHidden | orientación" no es más que una curita. En verdad, hay muchas formas en que se puede activar un cambio de configuración. Por ejemplo, si el usuario selecciona un nuevo idioma (es decir, la configuración regional ha cambiado), su actividad se reiniciará de la misma manera que lo hace un cambio de orientación. Si lo desea, puede ver una lista de todos los diferentes tipos de cambios de configuración .
Editar : Sin embargo, lo que es más importante, como hackbod señala en los comentarios, su actividad también se reiniciará cuando su aplicación esté en segundo plano y Android decida liberar algo de memoria eliminándola. Cuando el usuario vuelve a su aplicación, Android intentará reiniciar la actividad de la misma manera que si hubiera algún otro cambio de configuración. Si no puede manejar eso, el usuario no estará contento ...
En otras palabras, usar android:configChanges="keyboardHidden|orientation"
no es una solución para sus "preocupaciones". La forma correcta es codificar sus actividades para que estén contentas con cualquier reinicio que Android les arroje. Esta es una buena práctica que lo ayudará en el futuro, así que acostúmbrese.
Entonces, ¿cuándo debo usarlo?
Como mencionó, hay una clara ventaja. Sobrescribir el cambio de configuración predeterminado para una rotación al manejarlo usted mismo acelerará las cosas. Sin embargo, esta velocidad tiene un precio de conveniencia.
En pocas palabras, si usa el mismo diseño para retrato y paisaje, está en buena forma al sobrescribir. En lugar de una recarga completa de la actividad, las vistas simplemente cambiarán para llenar el espacio restante.
Sin embargo , si por alguna razón usa un diseño diferente cuando el dispositivo está en horizontal, el hecho de que Android vuelva a cargar su Actividad es bueno porque luego cargará el diseño correcto. [Si usa la anulación en una actividad de este tipo y desea hacer un nuevo diseño mágico en tiempo de ejecución ... bueno, buena suerte, está lejos de ser simple]
Sumario rápido
Por supuesto, si android:configChanges="keyboardHidden|orientation"
es adecuado para usted, entonces úselo. Pero POR FAVOR, asegúrese de probar qué sucede cuando algo cambia, porque un cambio de orientación no es la única forma en que se puede activar un reinicio completo de la actividad.