SharedPreferences vs DataStore: Android'de Veri Kalıcılığı

Android'de küçük verileri (kullanıcı tercihleri, token, basit ayarlar) depolamak için SharedPreferences uzun yıllar standart çözüm olmuş. Ancak Google, 2020'den itibaren DataStore'u önermeye başladı. İkisi de yerel veri tutsa da mimarı, güvenliği ve kullanım şekli farklı.

SharedPreferences XML tabanlı, anahtar-değer çiftlerini depolayan eski bir sistemdir. Kullanımı basit, fakat thread-safe değildir ve büyük verilerle sorun yaşar. Veri şifreli olmadan kaydedilir.

DataStore, SharedPreferences yerine Google tarafından önerilen modern çözümdür. Kotlin Coroutines ve Flow kullanır, asenkron işleme destekler, daha güvenlidir ve ACID işlemleri sağlar.

SharedPreferences ile veri kaydetme:

1val sharedPref = context.getSharedPreferences("app_prefs", Context.MODE_PRIVATE)
2sharedPref.edit().putString("username", "ahmet").apply()
3val username = sharedPref.getString("username", "")
4// Çıktı: "ahmet"

Gördüğün gibi senkron ve basit. Ancak UI thread'i bloke edebilir.

DataStore ile veri kaydetme (Preferences DataStore):

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Önce build.gradle'a ekle:

1dependencies {
2implementation "androidx.datastore:datastore-preferences:1.0.0"
3}

Sonra kullan:

1val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "app_prefs")
2
3// Veri yazma
4suspend fun saveUsername(context: Context, username: String) {
5context.dataStore.edit { preferences ->
6preferences[stringPreferencesKey("username")] = username
7}
8}
9
10// Veri okuma
11fun getUsername(context: Context): Flow<String> = context.dataStore.data.map { preferences ->
12preferences[stringPreferencesKey("username")]?: ""
13}
14
15// Kullanım
16LifecycleScope.launch {
17saveUsername(context, "ahmet")
18getUsername(context).collect { username ->
19println("Kullanıcı: $username")
20// Çıktı: "Kullanıcı: ahmet"
21}
22}

DataStore asenkron çalışır, UI donmaz.

SharedPreferences: Eski projeler, basit string-boolean depolama, hızlı prototip.

DataStore: Yeni projeler, Kotlin-first uygulamalar, asenkron iş akışı, daha güvenli veri tutma.

Google resmi olarak SharedPreferences'ı deprecated etmedi ama DataStore'a geçişi öneriye başladı. Eğer yeni bir proje yazıyorsan DataStore tercih et; mevcut projede acele yok ama zamanla geçiş düşün.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz