Sobes.tech
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:configChanges en AndroidManifest.xml para 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.