Middle
Qual è la specificità del cambio di posizioni sulla piattaforma Android?
sobes.tech AI
Risposta dell'AI
Quando si cambiano le posizioni (rotazione dello schermo o altri cambiamenti di configurazione) su Android, l'Activity corrente viene distrutta e ne viene creata una nuova.
Cosa succede:
- Vengono chiamati i cicli di vita della vecchia Activity:
onPause(),onStop(),onDestroy(). - La vecchia Activity viene rimossa dalla memoria.
- Viene creata una nuova Activity.
- Vengono chiamati i cicli di vita della nuova Activity:
onCreate(),onStart(),onResume().
Specificità per QA:
- Perdita di dati: Dati non salvati nei campi di input, elementi selezionati nelle liste, ecc., possono andare persi se non si implementa la loro conservazione.
- Stato dell'UI: La visibilità degli elementi, la posizione dello scroll, le schede selezionate e altri stati dell'UI possono essere reimpostati ai valori di default.
- Operazioni in background: Le attività in background in esecuzione (come il caricamento dei dati) possono essere interrotte o terminare in modo errato.
- Prestazioni: Múltiple cambi di configurazione possono rallentare l'app a causa della continua ricreazione dell'Activity.
- Perdite di memoria: Gestione scorretta delle risorse (ad esempio, Listener non disiscritti in
onDestroy()) può portare a perdite di memoria.
Come viene gestito dagli sviluppatori (e cosa QA deve verificare prima):
- Salvataggio dello stato: Uso di
onSaveInstanceState(),onRestoreInstanceState(), ViewModel, Android Architecture Components (AAC).// Esempio di salvataggio dei dati in onSaveInstanceState() @Override public void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); outState.putString("saved_text", myEditText.getText().toString()); }// Esempio di ripristino dei dati in 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); } } } - Gestione dei cambi di configurazione: Dichiarazione di
android:configChangesnelAndroidManifest.xmlper quei casi in cui non è necessario ricreare l'Activity (scenari meno comuni per il cambio di orientamento, ma usati per altri cambiamenti di configurazione). - Ciclo di vita del ViewModel: Il ViewModel mantiene il suo stato durante i cambi di configurazione e non viene distrutto insieme all'Activity.
- Fragment: Gestione corretta del ciclo di vita dei Fragment.
Test specifici per il cambio di posizione:
- Simulazione di rotazioni su diversi dispositivi e emulatori.
- Test di salvataggio e ripristino dei dati dopo il cambio di posizione.
- Verifica dello stato dell'UI (visibilità, testo, scroll, elementi selezionati).
- Test di interruzione e ripresa delle attività in background.
- Verifica di perdite di memoria (uso di Android Profiler).
- Test di stress: cambi di posizione rapidi e ripetuti.
Strumenti per QA:
- Android Studio (per il debug, visualizzazione dei log, uso di Profiler).
- comandi adb per simulare rotazioni.
- diversi emulatori e dispositivi reali con risoluzioni e versioni di Android diverse.