Sobes.tech
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-in AndroidManifest.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ə.