Middle
Android platformasında mövqelərin dəyişdirilməsinin xüsusiyyətləri nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Android-də mövqelərin dəyişdirilməsi (ekranın döndürülməsi və ya digər konfiqurasiya dəyişiklikləri) zamanı cari Activity məhv edilir və yeni bir Activity yaradılır.
Nə baş verir:
- Köhnə Activity-nin həyat dövrü çağırılır:
onPause(),onStop(),onDestroy(). - Köhnə Activity yaddaşdan silinir.
- Yeni Activity yaradılır.
- Yeni Activity-nin həyat dövrü çağırılır:
onCreate(),onStart(),onResume().
QA üçün xüsusiyyətlər:
- Məlumat itkisi: Saxlanmayan məlumatlar (giriş sahələrində, siyahı elementlərində və s.) saxlanmasa, itə bilər.
- UI vəziyyəti: Elementlərin görünürlüğü, skrolların mövqeyi, seçilmiş tablar və digər UI vəziyyətləri default vəziyyətə sıfırlana bilər.
- Arxa plan əməliyyatları: İşə salınmış arxa plan tapşırıqları (məsələn, məlumat yükləmə) kəsilə və ya düzgün tamamlanmaya bilər.
- Performans: Bir neçə konfiqurasiya dəyişiklikləri tətbiqin yavaşlamasına səbəb ola bilər, çünki Activity davamlı olaraq yenidən yaradılır.
- Yaddaş sızıntıları: Resursların düzgün idarə olunmaması (məsələn,
onDestroy()-də qeydiyyatdan çıxarılmayan Listenerlər) yaddaş sızıntılarına səbəb ola bilər.
İnkişaf etdiricilər necə idarə edir (və QA ilk nəyi yoxlamalıdır):
- Vəziyyətin saxlanması:
onSaveInstanceState(),onRestoreInstanceState(), ViewModel, Android Architecture Components (AAC) istifadə edilərək.// `onSaveInstanceState()`-də məlumatların saxlanması nümunəsi @Override public void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); outState.putString("saved_text", myEditText.getText().toString()); }// `onCreate()`-də məlumatların bərpası nümunəsi @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); } } } - Konfiqurasiya dəyişikliklərinin idarə olunması:
android:configChanges-inAndroidManifest.xml-də elan edilməsi, əgər Activity-nin yenidən yaradılması lazım deyilsə (daha az yaygın, lakin digər konfiqurasiya dəyişiklikləri üçün istifadə olunur). - ViewModel-in həyat dövrü: ViewModel konfiqurasiya dəyişiklikləri zamanı vəziyyətini saxlayır və Activity ilə birlikdə məhv edilmir.
- Fragmentlər: Fragmentlərin həyat dövrünün düzgün idarə olunması.
Pozisiyanın dəyişdirilməsi üçün xüsusi testlər:
- Müxtəlif cihazlarda və emulatorlarda ekranların döndürülməsi simulasiya olunması.
- Pozisiyanın dəyişməsindən sonra məlumatların saxlanması və bərpasını test etmək.
- UI vəziyyətinin yoxlanması (görünürlük, mətn, skroll, seçilmiş elementlər).
- Arxa plan tapşırıqlarının kəsilməsi və davam etdirilməsi testləri.
- Yaddaş sızıntılarının yoxlanması (Android Profiler istifadə edilərək).
- Stress testlər: sürətli və təkrarlanan pozisiya dəyişiklikləri.
QA üçün alətlər:
- Android Studio (səhvlərin diaqnostikası, logların görünməsi, Profiler istifadəsi).
- Döndürmələri simulasiya etmək üçün adb komandaları.
- müxtəlif emulatorlar və real cihazlar, müxtəlif həll və Android versiyaları ilə.