Veri nasıl fragment dışında saklanabilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Birkaç farklı yöntem, fragment dışında veri saklamak için vardır:
-
ViewModel: UI ile ilgili verileri yaşam döngüsü fark etmeksizin saklamak için idealdir. Konfigürasyon değişikliklerine dayanır.class MyViewModel : ViewModel() { var data: String = "" } -
Activity: Fragmentler, kapsayıcı aktivite ile etkileşime geçebilir (örneğin, arayüz veya doğrudan), burada aktiviteler veri saklayabilir.
// Activity içinde var sharedData: String = "" // Fragment içinde (activity as? MyActivity)?.sharedData = "Fragment'ten kaydedildi" -
Shared Preferences: Basit bir yöntem, temel verileri (küçük hacimler) saklamak için.
// Fragment'te val sharedPref = activity?.getSharedPreferences("my_prefs", Context.MODE_PRIVATE) ?: return with(sharedPref.edit()) { putString("saved_string", "Verilerim") apply() // veya commit() senkron yazma için } -
SQLite Database: Yapılandırılmış veriler ve daha karmaşık sorgular için.
-- SQL örneği CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT); -
Room Persistence Library: SQLite üzerinde soyutlama, veritabanlarıyla çalışma kolaylığı sağlar.
// Room Entity örneği @Entity data class User( @PrimaryKey val id: Int, val name: String ) -
DataStore: Modern bir alternatif, asenkron ve güvenli veri saklama sağlar.
// DataStore Prefs örneği val EXAMPLE_COUNTER = intPreferencesKey("example_counter") // Fragment'te context?.dataStore?.edit { settings -> val currentCounter = settings[EXAMPLE_COUNTER] ?: 0 settings[EXAMPLE_COUNTER] = currentCounter + 1 } -
İç/dış depolama: Dosya saklama için.
// Dosyaya yazma val filename = "my_data.txt" val fileContents = "Merhaba, dünya!" context?.openFileOutput(filename, Context.MODE_PRIVATE)?.use { it.write(fileContents.toByteArray()) } -
Singleton: Uygulama genelinde erişilebilen, veri saklamak için küresel örnek. Testler ve bellek sızıntıları nedeniyle dikkatli kullanılmalı.
object DataManager { var sharedData: String = "" } -
Uygulama Sınıfı:
Application'ı genişleten sınıf, uygulama genelinde kullanılabilir ve veri saklayabilir.class MyApp : Application() { var globalData: String = "" }