Middle
Care este specificitatea schimbării pozițiilor pe platforma Android?
sobes.tech AI
Răspuns de la AI
Când se schimbă pozițiile (rotația ecranului sau alte modificări de configurare) pe Android, activitatea curentă este distrusă și se creează una nouă.
Ce se întâmplă:
- Se apelează ciclurile de viață ale activității vechi:
onPause(),onStop(),onDestroy(). - Activitatea veche este eliminată din memorie.
- Se creează o activitate nouă.
- Se apelează ciclurile de viață ale noii activități:
onCreate(),onStart(),onResume().
Specificații pentru QA:
- Pierdere de date: Datele nesalvate în câmpurile de intrare, elementele selectate din liste etc. pot fi pierdute dacă nu se implementează salvarea lor.
- Starea UI: Vizibilitatea elementelor, poziția de derulare, tab-urile selectate și alte stări UI pot fi resetate la valorile implicite.
- Operațiuni în fundal: Sarcinile în fundal în curs (de exemplu, încărcarea datelor) pot fi întrerupte sau finalizate incorect.
- Performanță: Schimbările multiple de configurație pot încetini aplicația din cauza recreării constante a activității.
- Scurgeri de memorie: Gestionarea incorectă a resurselor (de exemplu, Listener-ii nedezabonați în
onDestroy()) poate duce la scurgeri de memorie.
Cum gestionează dezvoltatorii (și ce trebuie verificat în primul rând de QA):
- Salvarea stării: Utilizarea
onSaveInstanceState(),onRestoreInstanceState(), ViewModel, Android Architecture Components (AAC).// Exemplu de salvare a datelor în onSaveInstanceState() @Override public void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); outState.putString("saved_text", myEditText.getText().toString()); }// Exemplu de restaurare a datelor în 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); } } } - Gestionarea schimbărilor de configurare: Declararea
android:configChangesînAndroidManifest.xmlpentru cazurile în care nu este necesară recrearea activității (scenariu mai puțin frecvent pentru schimbarea orientării, dar utilizat pentru alte modificări de configurare). - Ciclul de viață al ViewModel: ViewModel păstrează starea sa în timpul schimbărilor de configurare și nu este distrus împreună cu activitatea.
- Fragmenturi: Gestionarea corectă a ciclului de viață al Fragmenturilor.
Testarea specifică pentru schimbarea poziției:
- Simularea rotațiilor pe diferite dispozitive și emulatoare.
- Testarea salvării și restaurării datelor după schimbarea poziției.
- Verificarea stării UI (vizibilitate, text, derulare, elemente selectate).
- Testarea întreruperii și reluării sarcinilor în fundal.
- Verificarea scurgerilor de memorie (utilizarea Android Profiler).
- Teste de stres: schimbări rapide și repetate ale poziției.
Instrumente pentru QA:
- Android Studio (pentru depanare, vizualizarea logurilor, utilizarea Profiler).
- comenzi adb pentru simularea rotațiilor.
- diferite emulatoare și dispozitive reale cu rezoluții și versiuni Android diferite.