Sobes.tech
Middle

Uygulama bağlamı ile Activity bağlamı arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Uygulama Bağlamı, uygulamanın genel kaynaklarına erişim sağlar ve uygulamanın tüm yaşam süresi boyunca geçerlidir. Activity Bağlamı, belirli bir Activity’nin yaşam döngüsüne bağlıdır, belirli bir ekran hakkında bilgi içerir ve bu Activity’ye özgü kaynaklara (örneğin, tema) erişim sağlar.

Ana farklar:

  • Yaşam süresi: Uygulama Bağlamı, uygulama çalıştığı sürece yaşar, Activity Bağlamı ise sadece ilgili Activity aktif olduğu sürece geçerlidir.
  • Kapsam: Uygulama Bağlamı, tüm uygulama için küreseldir, Activity Bağlamı ise belirli bir ekran içindir.
  • Kaynaklara erişim: Uygulama Bağlamı, genel kaynaklar için kullanılır, Activity Bağlamı ise Activity’ye özgü kaynaklar (örneğin, tema) içindir.
  • Hafıza sızıntıları: Activity bağlamının yanlış kullanımı (örneğin, statik alanda saklamak) hafıza sızıntılarına yol açabilir, çünkü Activity ve kaynaklarına referans tutar. Uygulama Bağlamı, uzun süreli saklama için daha güvenlidir.

Kullanım örnekleri:

  • Genel dizeleri veya renkleri almak:
    // Her yerde uygulama içinde
    val appName = applicationContext.getString(R.string.app_name)
    
  • Activity içinde View oluşturma:
    // Activity içinde
    val textView = TextView(this /* veya this@MyActivity */)
    
  • Yeni bir Activity başlatma:
    // Activity içinde
    val intent = Intent(this, DiğerActivity::class.java)
    startActivity(intent)
    
  • SharedPreferences erişimi:
    // Her iki bağlam da çalışır, ancak Context.MODE_PRIVATE kullanırken Activity bağlamı tercih edilir
    val prefs = getSharedPreferences("benim_prefs", Context.MODE_PRIVATE)
    

Uygulamanın doğru davranması ve hafıza sızıntılarını önlemek için uygun bağlamın kullanılması önemlidir. Çoğu durumda, UI ile ilgili işlemler için Activity bağlamı, belirli bir ekranla ilgili olmayan görevler için ise Application bağlamı kullanılır.