studio rotación rotacion reinicie que pantalla orientacion movil manejando horizontal girar forzar fijar evitar detectar desactivar configchanges como cambio activity java android android-activity screen-rotation

java - rotacion - manejando la rotación de pantalla en android studio



Mantener vista/diseño de datos en Android después de rotar la pantalla/actividad destruida (2)

¿Necesitas que tu actividad sea recreada? ¿Hay algún trabajo que quieras hacer en la rotación? savedInstanceState es donde almacenarías los datos para pasarlos a la recreación de la actividad, pero como no estás usando diseños XML, puedes considerar agregar android: configChanges = "orientation" a tu actividad en el manifiesto. Esto le dará control manual sobre lo que sucede durante el cambio de rotación.

Además de mi comentario original, anularía los cambios de configuración para el teclado que se muestra también:

android:configChanges="orientation|keyboardHidden"

Si hay trabajo que desea hacer en el cambio de rotación, puede anular el cambio de onConfigChange y hacer lo que necesite allí.

Es difícil decir que hay un momento en que siempre debes anular los cambios de configuración, pero a menudo lo hago cuando no tengo ninguna dependencia en las carpetas de recursos que son específicas para el tamaño o la orientación y estoy haciendo un montón de trabajo que llevaría demasiado tiempo para recrear

Estoy un poco confundido acerca de que la Activity se destruya y vuelva a crear cuando se gira el dispositivo del usuario.

He estado leyendo, y entiendo la razón para hacerlo (básicamente "obliga" al desarrollador a asegurarse de que no haya "omitido" nada en la rotación / idioma / otros cambios)

Me complace respetar las mejores prácticas si se las considera como tales, sin embargo, surge la pregunta:

¿Cómo ''recuerdo'' el estado del juego / aplicación, de modo que cuando se gira la pantalla tengo algo de lo que volver a generar lo que el usuario estaba mirando?

Por lo que puedo ver, absolutamente todo se destruye, el constructor de la clase base se ejecuta y todas las variables en la Activity son ''nulas''.

Sospecho que el ''savedInstanceState'' (clase Bundle ) es donde recopilaría esos datos, pero la lectura a su alrededor solo parece usarse cuando la aplicación se cierra por falta de recursos (y algunos otros casos extremadamente marginales)

¿Estoy desinformado o entendiendo mal el propósito de savedInstanceState? ¿Es prudente abandonar las mejores prácticas (dejar que se destruya la Activity ) si soy consciente de no perder nada en la rotación? Gracias de antemano por cualquier consejo.

Debo señalar que esta pregunta se aplica a la programación de juegos (no estoy usando un diseño XML)


Hay otras mejores prácticas para almacenar datos mientras cambia la configuración de la actividad.

1. Desarrollador Doc Handling Runtime Changes
2. Alex Lockwood: manejo de los cambios de configuración con fragmentos . Esto responderá a todas sus preguntas en relación con el cambio de configuración y el almacenamiento de datos.

Impt: Fragmento de archivo para almacenar datos. Debe establecer setRetainInstace(true) para almacenar datos y recuperarlos mientras cambia su configuración de actividad.

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // retain this fragment setRetainInstance(true); }