Sobes.tech
Junior

Android'de Activity'nin yaşam döngüsü hakkında ne anlatabilirsiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Activity yaşam döngüsü, her Activity örneğinin oluşturulmasından yok edilmesine kadar geçen durumlar ve bunlar arasındaki geçişler bütünüdür. Bu, geri çağırma (callback) metodları kümesiyle tanımlanır.

Yaşam döngüsünün temel callback metodları:

  • onCreate(): Activity ilk oluşturulduğunda çağrılır. Burada kullanıcı arayüzü başlatılır, veri bağlama ve diğer tek seferlik işlemler yapılır.
  • onStart(): Activity kullanıcının gözüne görünür hale geldiğinde çağrılır, ancak henüz odaklanmamıştır.
  • onResume(): Activity odak alır ve aktif hale gelir. Burada genellikle animasyonlar ve diğer etkileşimli işlemler başlatılır.
  • onPause(): Activity odak kaybeder, ancak hâlâ görünürdür (örneğin, üzerine yarı saydam bir diyalog penceresi açılmışsa). Burada kaynak yoğun işlemler durdurulmalıdır.
  • onStop(): Activity artık kullanıcının gözüne görünmüyorsa çağrılır. Burada kaydedilmemiş veriler saklanır ve artık gerek olmayan kaynaklar serbest bırakılır.
  • onDestroy(): Activity yok edilmeden önce çağrılır. Burada kalan tüm kaynaklar serbest bırakılır.
  • onRestart(): onStop() sonrası tekrar gösterildiğinde çağrılır. Ardından onStart() gelir.

Grafiksel olarak yaşam döngüsü şu şekilde temsil edilebilir:

Created -> Started -> Resumed -> Paused -> Stopped -> Destroyed

Ayrıca geçişler de vardır:

  • Created -> Started (onStart() sonrası)
  • Started -> Resumed (onResume() sonrası)
  • Resumed -> Paused (odak kaybı durumunda)
  • Paused -> Resumed (odak geri kazanıldığında)
  • Paused -> Stopped (tamamen gizlendiğinde)
  • Stopped -> Destroyed (aktivite sona erdiğinde)
  • Stopped -> Restarted -> Started (onRestart() sonrası)

Bu callback metodlarında Activity durumunu doğru yönetmek, bellek sızıntılarını önlemek ve uygulamanın yapılandırma değişiklikleri veya Activityler arası geçişlerde düzgün davranmasını sağlamak önemlidir. Durumu kaydetmek için onSaveInstanceState() kullanılır (onStop() öncesi) ve geri yükleme onCreate() veya onRestoreInstanceState() içinde yapılır (onStart() sonrası).

onSaveInstanceState() kullanımına örnek:

// Durumu kaydet
override fun onSaveInstanceState(outState: Bundle) {
    outState.putString("my_data", "some_value")
    super.onSaveInstanceState(outState)
}

// Durumu geri yükle
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // ...
    if (savedInstanceState != null) {
        val myData = savedInstanceState.getString("my_data")
        // myData'yı kullan
    }
}