Middle
Mi az Android platformán a pozíciók cseréjének sajátossága?
sobes.tech MI
Válasz az MI-től
Pozícióváltás (pl. képernyőforgatás vagy más konfigurációs változtatások) esetén az Androidon az aktuális Activity megsemmisül, és egy új jön létre.
Mi történik:
- A régi Activity életciklusai hívódnak:
onPause(),onStop(),onDestroy(). - A régi Activity eltávolításra kerül a memóriából.
- Egy új Activity jön létre.
- Az új Activity életciklusai hívódnak:
onCreate(),onStart(),onResume().
QA-specifikus megjegyzések:
- Adatvesztés: A nem mentett adatok a bevitel mezőiben, listák kiválasztott elemei stb. elveszhetnek, ha nem valósítják meg azok megőrzését.
- UI állapota: Az elemek láthatósága, görgetési pozíciók, kiválasztott lapok és más UI állapotok visszaállhatnak alapértelmezett értékekre.
- Háttér műveletek: A háttérben futó feladatok (pl. adatbetöltés) megszakadhatnak vagy helytelenül fejeződhetnek be.
- Teljesítmény: Többszöri konfigurációváltás lassíthatja az alkalmazást a folyamatos Activity újraalkotás miatt.
- Memóriaszivárgás: A helytelen erőforrás-kezelés (pl. Listener-ek, amiket nem vonnak vissza az
onDestroy()-ban) memóriaszivárgáshoz vezethet.
Hogyan kezelik a fejlesztők (és mit ellenőrizzen a QA):
- Állapot mentése:
onSaveInstanceState(),onRestoreInstanceState(), ViewModel, Android Architecture Components (AAC) használata.// Példa adatok mentésére az onSaveInstanceState() során @Override public void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); outState.putString("saved_text", myEditText.getText().toString()); }// Példa adatok visszaállítására az onCreate() során @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); } } } - Konfigurációváltozások kezelése:
android:configChangesdeklarálása azAndroidManifest.xml-ben azokban az esetekben, amikor nem szükséges az Activity újraalkotása (kevésbé elterjedt, de más konfigurációs változtatásokhoz használják). - ViewModel életciklus: A ViewModel megőrzi az állapotát konfigurációváltáskor, és nem semmisül meg az Activity-vel együtt.
- Fragmentek: A Fragmentek életciklusának helyes kezelése.
Speciális tesztelés a pozícióváltásra:
- Képernyőforgatás szimulálása különböző eszközökön és emulátorokon.
- Az adatok mentése és visszaállítása a pozícióváltás után.
- UI állapotának ellenőrzése (láthatóság, szöveg, görgetés, kiválasztott elemek).
- Háttér feladatok megszakítása/folytatása.
- Memóriaszivárgás ellenőrzése (Android Profiler használatával).
- Stressztesztelés: többszöri gyors pozícióváltás.
Eszközök a QA számára:
- Android Studio (hibaelhárítás, logok megtekintése, Profiler használata).
- adb parancsok a forgatások szimulálására.
- Különböző emulátorok és valódi eszközök különböző felbontásokkal és Android verziókkal.