Middle
Koja je specifičnost promene pozicija na Android platformi?
sobes.tech АИ
Одговор од АИ
Prilikom promene pozicija (npr. rotacija ekrana ili drugih konfiguracionih promena) na Androidu, trenutna Aktivnost se uništava i kreira se nova.
Šta se dešava:
- Pozivaju se životni ciklusi stare Aktivnosti:
onPause(),onStop(),onDestroy(). - Stara Aktivnost se uklanja iz memorije.
- Kreira se nova Aktivnost.
- Pozivaju se životni ciklusi nove Aktivnosti:
onCreate(),onStart(),onResume().
Specifičnosti za QA:
- Gubitak podataka: Neposredni podaci u poljima za unos, izabrani elementi liste itd. mogu biti izgubljeni ako njihovo čuvanje nije implementirano.
- Stanje UI: Vidljivost elemenata, pozicija skrolovanja, izabrane kartice i drugo stanje UI može biti resetovano na podrazumevano.
- Operacije u pozadini: Pokrenute pozadinske zadatke (npr. učitavanje podataka) mogu biti prekinute ili nepravilno završene.
- Performanse: Česta promena konfiguracije može usporiti aplikaciju zbog stalnog ponovnog kreiranja Aktivnosti.
- Curenje memorije: Neispravno upravljanje resursima (npr. Listener-i, koji nisu odjavljeni u
onDestroy()) može dovesti do curenja memorije.
Kako to rešavaju programeri (i šta QA treba prvo da proveri):
- Čuvanje stanja: Korišćenje
onSaveInstanceState(),onRestoreInstanceState(), ViewModel, Android Architecture Components (AAC).// Primer čuvanja podataka u `onSaveInstanceState()` @Override public void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); outState.putString("saved_text", myEditText.getText().toString()); }// Primer obnavljanja podataka u `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); } } } - Obrada promena konfiguracije: Deklaracija
android:configChangesuAndroidManifest.xmlza slučajeve kada nije potrebna ponovna izgradnja Aktivnosti (manje uobičajeno, ali se koristi za druge promene konfiguracije). - Životni ciklus ViewModel: ViewModel čuva svoje stanje pri promeni konfiguracije i ne uništava se zajedno sa Aktivnošću.
- Fragmenti: Ispravno upravljanje životnim ciklusom Fragmenta.
Testiranje promene pozicija:
- Simulacija rotacije ekrana na različitim uređajima i emulatorima.
- Testiranje čuvanja i obnavljanja podataka nakon promene pozicije.
- Provera stanja UI (vidljivost, tekst, skrol, izabrani elementi).
- Testiranje prekida/nastavka pozadinskih zadataka.
- Provera curenja memorije (korišćenjem Android Profiler-a).
- Stress testiranje: višestruke brze promene pozicije.
Alati za QA:
- Android Studio (za debugovanje, pregled logova, korišćenje Profiler-a).
- adb komande za simulaciju rotacije.
- Različiti emulatori i pravi uređaji sa različitim rezolucijama i verzijama Androida.