Android'de SharedPreferences

Bugün örnek bir uygulama ile veri depolamanın en kolay yolunu göreceğiz. Genel olarak veri depolamak denilince aklımıza ilk olarak SQL, MongoDB vb geliyor. Ancak basit veriler için bunlara ihtiyacımız olmadığını yakında göreceğiz .
Basit veriler derken genellikle kullanıcının yaşı , hangi ülkeden olduğu ve tercih ettiği ayarlar gibi verileri tutuyoruz . Kullanıcı uygulamayı kapatsa bile bu veriler kaybolmaz.
SharedPreferences nedir?
Fazladan hiçbir şeye ihtiyaç duymadan basit verileri tutabiliriz. Key-Value çifti ile çalışan bir yapıdır . Tutabileceğimiz veri türleri aşağıdakilerle sınırlıdır; Int, Boolean, Float, Long ve String.
Şimdi bu yapıyı kullanıcının yaşını aldığımız bir uygulamada kullanalım ve kaydedelim. (GitHub bağlantısını buraya bırakıyorum .)
class MainActivity : AppCompatActivity() {
private lateinit var preferences : SharedPreferences
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
preferences = this.getSharedPreferences("com.aliduman.savemyage"
, Context.MODE_PRIVATE)
}
bu :
İçinde bulunduğumuz aktiviteyi göstermek için kullanırız.
com.aliduman.savemyage:
Bu kısımda bizden sadece isim istiyor. Genel olarak paket adını bu kısma koyuyoruz .
Bağlam.MODE_PRIVATE:
Mod, uygulamamızın tercihlerine kimlerin erişebileceğini tanımlar. Özel, varsayılan moddur ve yalnızca bu uygulamadan erişilebileceğini ayarlar.

Tanımlamaları ve ayarları yaptıktan sonra SharedPreferences'ı kullanalım . Amacımız kullanıcının yaşını girip kaydetmek, ardından bu yaşı kaydedip uygulamayı kapatıp açtıktan sonra kullanıcıya göstermek.
var currentAge = preferences.getInt("age",-1)
getInt():
Bu metot verilen değeri döndürür. Daha önce yaratılmamışsa, yaratılacaktır.
yaş:
Bu, korumak istediğimiz değerin anahtarıdır.
-1:
Herhangi bir veri girilmediyse varsayılan olarak bir değer atamak için kullandığımız bu parametre.
if (currentAge != -1) { //if user saved age before..
age_text.hint = currentAge.toString()
} else {//if first time user saved age
save_button.setOnClickListener {
var ageInput = Integer.valueOf(age_text.text.toString())
preferences.edit().putInt("age", ageInput).apply() //We save it to SharedPreferences.
}
}
düzenlemek()
Değerimizde değişiklik veya atama yapmak için kullanırız.
putInt()
Sakladığımız şeye veri koymak için kullanırız.
uygula()
tüm bu değişiklikleri uygulamak için bu yöntem gereklidir.

Kullanıcı 23 sayısını girer ve kaydet düğmesine basar.↑

Mutlu son, kullanıcı uygulamaya tekrar girdiğinde algoritmamız ve SharedPreferences ile yaşını gösterebiliyoruz.↑
!UYARI!
SharedPreferences'a odaklanmak için null kontrolü gibi bazı önemli adımları atladım. Kullanıcının girdiği datanın null olup olmadığını kontrol etmeyi unutmayınız. Temiz kod, güvenilir kod