Middle
¿Cuál es la especificidad del cambio de posiciones en la plataforma Android?
sobes.tech AI
Respuesta de la IA
Al cambiar de posición (rotación de pantalla u otros cambios de configuración) en Android, la Activity actual se destruye y se crea una nueva.
Qué sucede:
- Se llaman los ciclos de vida de la antigua Activity:
onPause(),onStop(),onDestroy(). - La antigua Activity se elimina de la memoria.
- Se crea una nueva Activity.
- Se llaman los ciclos de vida de la nueva Activity:
onCreate(),onStart(),onResume().
Especificidad para QA:
- Pérdida de datos: Datos no guardados en campos de entrada, elementos seleccionados en listas, etc., pueden perderse si no se implementa su conservación.
- Estado de la UI: La visibilidad de los elementos, la posición del scroll, las pestañas seleccionadas y otros estados de la UI pueden restablecerse a los valores predeterminados.
- Operaciones en segundo plano: Tareas en segundo plano en ejecución (como carga de datos) pueden interrumpirse o finalizarse incorrectamente.
- Rendimiento: Múltiples cambios de configuración pueden ralentizar la aplicación debido a la constante recreación de la Activity.
- Fugas de memoria: La gestión incorrecta de recursos (como Listeners no desregistrados en
onDestroy()) puede causar fugas de memoria.
Cómo lo manejan los desarrolladores (y qué debe verificar QA primero):
- Guardar estado: Uso de
onSaveInstanceState(),onRestoreInstanceState(), ViewModel, Android Architecture Components (AAC).// Ejemplo de guardar datos en onSaveInstanceState() @Override public void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); outState.putString("saved_text", myEditText.getText().toString()); }// Ejemplo de restauración de datos en onCreate() @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState != null) { String savedText = savedInstanceState.getString("saved_text"); if (savedText != null) { myEditText.setText(savedText); } } } - Manejo de cambios de configuración: Declarar
android:configChangesenAndroidManifest.xmlpara casos donde no se requiere recrear la Activity (escenario menos común para cambios de orientación, pero útil para otros cambios de configuración). - Ciclo de vida de ViewModel: El ViewModel mantiene su estado durante cambios de configuración y no se destruye junto con la Activity.
- Fragmentos: Gestión adecuada del ciclo de vida de los Fragmentos.
Pruebas específicas para cambios de posición:
- Simulación de rotaciones en diferentes dispositivos y emuladores.
- Pruebas de guardar y restaurar datos tras cambios de posición.
- Verificación del estado de la UI (visibilidad, texto, scroll, elementos seleccionados).
- Pruebas de interrupción y continuación de tareas en segundo plano.
- Verificación de fugas de memoria (uso de Android Profiler).
- Pruebas de estrés: cambios rápidos y repetidos de posición.
Herramientas para QA:
- Android Studio (para depuración, visualización de logs, uso de Profiler).
- comandos adb para simular rotaciones.
- diferentes emuladores y dispositivos reales con distintas resoluciones y versiones de Android.