Sobes.tech
Middle

Android platformunda pozisyon değiştirmenin özellikleri nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Android'de pozisyon değişiklikleri (ekran döndürme veya diğer yapılandırma değişiklikleri) sırasında mevcut Activity yok edilir ve yeni bir Activity oluşturulur.

Olanlar:

  • Eski Activity'nin yaşam döngüsü çağrılır: onPause(), onStop(), onDestroy().
  • Eski Activity bellekten kaldırılır.
  • Yeni bir Activity oluşturulur.
  • Yeni Activity'nin yaşam döngüsü çağrılır: onCreate(), onStart(), onResume().

QA için özellikler:

  • Veri kaybı: Kaydedilmemiş veriler (giriş alanlarındaki, liste öğeleri vb.) kaybolabilir, eğer bunların korunması sağlanmamışsa.
  • UI durumu: Öğelerin görünürlüğü, kaydırma konumu, seçili sekmeler ve diğer UI durumu sıfırlanabilir.
  • Arka plan işlemleri: Çalışmakta olan arka plan görevleri (örneğin, veri yükleme) kesilebilir veya hatalı şekilde sona erebilir.
  • Performans: Birden fazla yapılandırma değişikliği, Activity'nin sürekli yeniden oluşturulması nedeniyle uygulamanın yavaşlamasına neden olabilir.
  • Bellek sızıntıları: Kaynakların yanlış kullanımı (örneğin, onDestroy() içinde iptal edilmemiş dinleyiciler) bellek sızıntılarına yol açabilir.

Geliştiricilerin nasıl yönettiği (ve QA'nın ilk olarak neyi kontrol etmesi gerektiği):

  • Durum kaydetme: onSaveInstanceState(), onRestoreInstanceState(), ViewModel, Android Architecture Components (AAC) kullanımı.
    // onSaveInstanceState() içinde veri kaydetme örneği
    @Override
    public void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("saved_text", myEditText.getText().toString());
    }
    
    // onCreate() içinde veri geri yükleme örneği
    @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);
            }
        }
    }
    
  • Konfigürasyon değişikliklerinin yönetimi: android:configChanges bildirimi, Activity'nin yeniden oluşturulmasını gerektirmeyen durumlar için (daha az yaygın, ancak diğer yapılandırma değişiklikleri için kullanılır).
  • ViewModel yaşam döngüsü: ViewModel, yapılandırma değişiklikleri sırasında durumunu korur ve Activity ile birlikte yok edilmez.
  • Fragmentler: Fragmentlerin yaşam döngüsünün doğru yönetimi.

Pozisyon değişikliği testleri:

  • Farklı cihazlar ve emülatörlerde döndürme simülasyonları.
  • Pozisyon değişikliğinden sonra veri kaydetme ve geri yükleme testleri.
  • UI durumunun (görünürlük, metin, kaydırma, seçili öğeler) kontrolü.
  • Arka plan görevlerinin kesilmesi ve devam ettirilmesi testleri.
  • Bellek sızıntısı kontrolü (Android Profiler kullanımı).
  • Yoğunluk testleri: hızlı ve tekrar eden pozisyon değişiklikleri.

QA araçları:

  • Android Studio (hata ayıklama, log görüntüleme, Profiler kullanımı).
  • Döndürmeleri simüle etmek için adb komutları.
  • Farklı çözünürlük ve Android sürümlerine sahip gerçek cihazlar ve emülatörler.