programacion - manual de android en pdf
¿Qué método de actividad se llama cuando ocurren cambios de orientación? (2)
¿Qué método del ciclo de vida se llama cuando ocurren los cambios de orientación? Mi aplicación ejecuta el método onResume()
o tal vez vuelve a cargar toda la actividad porque he establecido un valor booleano para verificar si se ejecuta por primera vez o no. He leído onConfigurationChanged()
cuando se produce el cambio de orientación, ¿es cierto? ¿Cómo manejar esto?
Interesante ...
La actividad se inicia onResume()
es lo que declaras en tu XML de forma predeterminada.
Y como he encontrado en la respuesta a la pregunta sobre el desbordamiento de la pila es:
Cambio de Orientación
- onSaveInstanceState
- OnPause
- OnStop
- onCreate
- onStart
- onRestoreInstanceState
- En resumen
Cambiar a la Actividad 2
- onSaveInstanceState
- OnPause
Cambio de orientación MIENTRAS QUE EN LA Actividad 2
- OnStop
- onCreate
- onStart
Switchback ATRÁS DESDE Activity2
- En resumen
Supongo que debido a que la Actividad 1 está oculta en el momento de la rotación, onRestoreInstanceState
no se llama porque no hay ''vista'' (es decir, no se puede ver / ver). Además, es completamente posible tener 2 archivos de diseño completamente diferentes para vertical / horizontal que potencialmente tengan diferentes elementos de interfaz de usuario con ID diferentes.
Como resultado, yo diría que si quieres usar el paquete en onSaveInstanceState
para guardar tus propios datos, entonces necesitas agregar lógica extra en tu onCreate
(en la actividad 1) para procesar tus propios datos allí (además de hacerlo condicionalmente en onRestoreInstanceState
).
En particular, podría mantener un campo de orientación ''último conocido'' para que onCreate
sepa que necesita procesar sus propios datos porque la orientación ha cambiado, en lugar de depender de que se onRestoreInstanceState
a onRestoreInstanceState
.
public class MainActivity extends AppCompatActivity {
private final static String TAG = "AppActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate(Bundle) called");
setContentView(R.layout.activity_main);
}
@Override
public void onStart() {
super.onStart();
Log.d(TAG, "onStart() called");
}
@Override
public void onPause() {
super.onPause();
Log.d(TAG, "onPause() called");
}
@Override
public void onResume() {
super.onResume();
Log.d(TAG, "onResume() called");
}
@Override
public void onStop() {
super.onStop();
Log.d(TAG, "onStop() called");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy() called");
}
}
1) Intente ejecutar su aplicación en su teléfono y / o emulador y abra Logcat => en la parte superior de la ventana, seleccione Verbose.
2) Ahora intente cambiar la orientación de la pantalla (por ejemplo desde el retrato => modo horizontal).
Espero que esta alternativa te brinde más información sobre el ciclo de vida de la actividad.