SharedPreferences
SharedPreferences kullanarak basit anahtar-değer verilerini uygulama oturumları arasında kalıcı hâle getirin. Tercihleri kaydetmeyi, okumayı ve kaldırmayı öğrenin.
SharedPreferences, CoddyKit'te ücretsiz bir Android Academy dersidir. Bu, 6 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Android Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Android Academy kursu toplamda 6 dersten oluşur.
Kalıcı Depolama Seçenekleri
Android, verileri yerel olarak depolamak için çeşitli yollar sunar:
- SharedPreferences — basit anahtar-değer çiftleri (ayarlar, belirteçler)
- Room — yapılandırılmış SQLite veritabanı (karmaşık veriler)
- DataStore — SharedPreferences'ın modern ve eşzamansız alternatifi
- Dosyalar — ham dosya G/Ç işlemleri
SharedPreferences, basit ayarlar ve kullanıcı tercihleri için idealdir.
SharedPreferences Nedir?
SharedPreferences, verileri cihazdaki bir XML dosyasında anahtar-değer çiftleri olarak depolar. Şunları destekler:
- String
- Int / Long / Float
- Boolean
- Set<String>
Veriler, uygulama yeniden başlatıldığında da korunur ve yapılandırma değişikliklerinden (döndürme) etkilenmez.
SharedPreferences Örneği Alma
SharedPreferences nesnesi almanın iki yolu vardır:
// 1. Named preferences (shared across activities)
val prefs = getSharedPreferences(
"MyAppPrefs", // file name
Context.MODE_PRIVATE // only your app can read it
)
// 2. Activity's default preferences
val prefs = getPreferences(Context.MODE_PRIVATE)Veri Yazma
Değerleri yazmak için bir Editor kullanın, ardından apply() çağırın:
val prefs = getSharedPreferences("MyAppPrefs", Context.MODE_PRIVATE)
prefs.edit()
.putString("username", "alice")
.putInt("login_count", 5)
.putBoolean("dark_mode", true)
.apply() // async, non-blocking — preferred over commit()
// Kotlin extension (cleaner syntax):
with(prefs.edit()) {
putString("username", "alice")
apply()
}Veri Okuma
Bir anahtar mevcut değilse varsayılan değer sağlayarak değerleri anahtarlarına göre okuyun:
val prefs = getSharedPreferences("MyAppPrefs", Context.MODE_PRIVATE)
val username = prefs.getString("username", "Guest") // default: "Guest"
val count = prefs.getInt("login_count", 0) // default: 0
val darkMode = prefs.getBoolean("dark_mode", false) // default: false
println("Hello, $username! Logins: $count. Dark: $darkMode")Uygulamalı Örnek: Tema Değiştirme
Koyu mod ayarını kaydedin ve geri yükleyin:
class SettingsActivity : AppCompatActivity() {
private lateinit var binding: ActivitySettingsBinding
private lateinit var prefs: SharedPreferences
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySettingsBinding.inflate(layoutInflater)
setContentView(binding.root)
prefs = getSharedPreferences("settings", MODE_PRIVATE)
// Restore saved state
binding.switchDarkMode.isChecked = prefs.getBoolean("dark_mode", false)
binding.switchDarkMode.setOnCheckedChangeListener { _, isChecked ->
prefs.edit().putBoolean("dark_mode", isChecked).apply()
}
}
}Giriş Belirteci Kaydetme
Kimlik doğrulama belirtecini uygulamanın yeniden başlatılması sonrasında da koruyun ve denetleyin:
// Save token after login
fun saveToken(token: String) {
getSharedPreferences("auth", MODE_PRIVATE)
.edit()
.putString("token", token)
.apply()
}
// Check if user is logged in
fun isLoggedIn(): Boolean {
val token = getSharedPreferences("auth", MODE_PRIVATE)
.getString("token", null)
return token != null
}
// Clear on logout
fun logout() {
getSharedPreferences("auth", MODE_PRIVATE)
.edit()
.remove("token")
.apply()
}Verileri Kaldırma ve Temizleme
Belirli anahtarları kaldırın veya tüm verileri silin:
.remove("key")— bir girdiyi siler.clear()— dosyadaki her şeyi siler
Her zaman .apply() çağırın (eşzamanlı onay gerekiyorsa .commit() kullanın).
SharedPreferences ve DataStore Karşılaştırması
SharedPreferences iyi çalışır, ancak bazı sınırlamaları vardır:
- Eşzamanlı okumalar ana iş parçacığını engelleyebilir
- Tür güvenliği yoktur
Jetpack DataStore modern alternatiftir — Kotlin Flow ve tür güvenliğiyle tamamen eşzamansız çalışır. Yeni projelerde DataStore'u tercih edin. SharedPreferences hâlâ yaygın olarak kullanılır ve küçük miktarda veri için tamamen uygundur.
Hızlı Kontrol
Kullanıcı arayüzü iş parçacığını engellemeden verileri SharedPreferences'a eşzamansız olarak kaydeden yöntem hangisidir?
Özet: SharedPreferences
Artık basit verileri uygulama başlatmaları arasında kalıcı hâle getirebilirsiniz:
getSharedPreferences(name, MODE_PRIVATE)ile alın- Yazma:
.edit().putString(key, value).apply() - Okuma:
.getString(key, defaultValue) - Kaldırma:
.edit().remove(key).apply() commit()(eşzamanlı) yerineapply()(eşzamansız) kullanın
Sonraki kurs: Uygulama Mimarisi — ViewModel, Room ve Coroutines.
Yapay zeka eğitmeniyle Kotlin öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 36
- Dersler
- 152
Sıkça Sorulan Sorular
“SharedPreferences” dersi ücretsiz mi?
Evet — “SharedPreferences” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Android Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Android Academy kursu toplamda 6 dersten oluşur.
“SharedPreferences” dersinde ne öğreneceğim?
SharedPreferences kullanarak basit anahtar-değer verilerini uygulama oturumları arasında kalıcı hâle getirin. Tercihleri kaydetmeyi, okumayı ve kaldırmayı öğrenin. Android Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Android Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Android Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 6 dersinin 4. dersidir.
“SharedPreferences” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Android Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Android Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Kotlin Koleksiyonları
- RecyclerView Temelleri
- RecyclerView Tıklama Olayları
- SharedPreferences
- DataStore Tercihleri
- Adaptörler ve DiffUtil