Sobes.tech
Junior

Android'de bir nesneyi geçici olarak nasıl saklayabiliriz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Android'de nesneleri geçici olarak saklamanın birkaç yolu vardır, seçim süresine ve bileşenin tamamlanmasından sonra erişim gereksinimine bağlıdır:

  • View Durumu: View ile ilişkili nesneler, yeniden oluşturulduğunda (örneğin ekran döndürme sırasında) geri yüklenen durumlarına kaydedilebilir. onSaveInstanceState() ve onRestoreInstanceState() kullanılır.
  • ViewModel: UI ile ilişkili verileri saklamanın en iyi yolu, Activity/Fragment yapılandırma değişikliklerini (örneğin ekran döndürmeleri) atlatması gereken veriler içindir. ViewModel, ViewModelStoreOwner yok edilene kadar var olur.
    // Activity/Fragment içinde
    val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
    
    // ViewModel içinde
    class MyViewModel : ViewModel() {
        var myObject: MyData? = null
    }
    
  • onRetainCustomNonConfigurationInstance() (kullanımdan kaldırılmış): Activity'de, yapılandırma değişikliklerini atlatan rastgele nesneleri kaydetmek için kullanılır. Nesneyi almak için getLastNonConfigurationInstance() kullanılır. Kullanımdan kaldırılmıştır, ViewModel tercih edilir.
    // Activity içinde
    override fun onRetainCustomNonConfigurationInstance(): Any? {
        return myObjectToRetain
    }
    
    // Nesneyi almak
    val retainedObject = lastCustomNonConfigurationInstance as? MyData
    
  • Application sınıfı: Uygulama yaşam döngüsü boyunca yaşaması gereken nesneler içindir. Çok fazla veri tutmamak için dikkatli kullanılmalıdır.
  • Geçici dosyalar: Belleğe doğrudan sığmayan veya kısa süreli disk üzerinde saklama gerektiren büyük nesneler içindir.
Yöntem Ömür Süresi Kullanım
View Durumu View ömrü + yeniden oluşturma View ile ilişkili küçük veriler
ViewModel Activity/Fragment ömrü UI verileri, yapılandırma değişikliklerini atlatan
onRetainCustomNonConfigurationInstance() Activity ömrü + değişiklikler Rastgele nesneler (kullanımdan kaldırılmış)
Application sınıfı Uygulama ömrü Küresel nesneler
Geçici dosyalar Geliştirici tarafından belirlenir Büyük nesneler, geçici depolama