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()veonRestoreInstanceState()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çingetLastNonConfigurationInstance()kullanılır. Kullanımdan kaldırılmıştır,ViewModeltercih edilir.// Activity içinde override fun onRetainCustomNonConfigurationInstance(): Any? { return myObjectToRetain } // Nesneyi almak val retainedObject = lastCustomNonConfigurationInstance as? MyDataApplicationsı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 |