Middle
Milline on positsioonide muutmise spetsiifika Androidi platvormil?
sobes.tech AI
Vastus AI-lt
Posicionālo izmaiņu (piemēram, ekrāna pagriešanas vai citu konfigurācijas izmaiņu) gadījumā Android notiek pašreizējās aktivitātes iznīcināšana un jaunas izveide.
Kas notiek:
- Vecās aktivitātes dzīves cikli tiek izsaukti:
onPause(),onStop(),onDestroy(). - Vecā aktivitāte tiek izņemta no atmiņas.
- Tiek izveidota jauna aktivitāte.
- Tiek izsaukti jaunas aktivitātes dzīves cikli:
onCreate(),onStart(),onResume().
Specifika QA:
- Datu zudums: Nesaglabāti dati ievades laukos, atlasītie saraksta elementi utt. var tikt zaudēti, ja to saglabāšana nav īstenota.
- UI stāvoklis: Elementu redzamība, ritināšanas pozīcijas, atlasītās cilnes un cits UI stāvoklis var tikt atiestatīts uz noklusējuma stāvokli.
- Fona operācijas: Sāktas fonu uzdevumi (piemēram, datu ielāde) var tikt pārtraukti vai nepareizi pabeigti.
- Veiktspēja: Daudzkārtējas konfigurācijas izmaiņas var novest pie lietotnes darbības palēnināšanās, jo aktivitāte tiek pastāvīgi pārveidota.
- Atmiņas noplūde: Nepareiza resursu izmantošana (piemēram, klausītāji, kas nav atvienoti
onDestroy()) var novest pie atmiņas noplūdēm.
Kā to risina izstrādātāji (un ko QA jā pārbauda galvenokārt):
- Stāvokļa saglabāšana: Izmantojot
onSaveInstanceState(),onRestoreInstanceState(), ViewModel, Android Architecture Components (AAC).// Piemērs datu saglabāšanai `onSaveInstanceState()` @Override public void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); outState.putString("saved_text", myEditText.getText().toString()); }// Piemērs datu atjaunošanai `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); } } } - Konfigurācijas izmaiņu apstrāde:
android:configChangesdeklarēšanaAndroidManifest.xml, ja nav nepieciešama aktivitātes pārveidošana (mazāk izplatīts scenārijs, bet izmanto citām konfigurācijas izmaiņām). - ViewModel dzīves cikla pārvaldība: ViewModel saglabā savu stāvokli konfigurācijas izmaiņu laikā un netiek iznīcināts kopā ar aktivitāti.
- Fрагments: Pareiza dzīves cikla pārvaldība fragmentiem.
Specifiskās testēšanas aktivitātes pozīcijas maiņai:
- Pagriežot ekrānu dažādās ierīcēs un emulātoros.
- Saglabājot un atjaunojot datus pēc pozīcijas maiņas.
- Pārbaudot UI stāvokli (redzamība, teksts, ritināšana, atlasītie elementi).
- Pārbaudot fonu uzdevumu pārtraukšanu un turpināšanu.
- Pārbaudot atmiņas noplūdes (Android Profiler izmantošana).
- Stresa testēšana: daudzkārtējas ātras pozīcijas maiņas.
Rīki QA:
- Android Studio (lai debug, logu pārskatīšana, Profiler izmantošana).
- adb komandas ekrāna pagriešanas simulācijai.
- Dažādas emulācijas un reālas ierīces ar dažādiem izšķirtspējām un Android versijām.