SharedPreferences ile Uygulama Verilerinin Saklanması
Shared Preferences ile Uygulamanın Verilerinin Saklanması
Bir uygulama için bazı basit bilgilerin o an saklanması ve tekrar elde edilebilmesi için Shared Preferences denilen bir alan kullanılır.
Bu alandaki dosyalar uygulamanın verileri silindiğinde yok edilmektedir.Bu yüzden programcı açısından cache dosyalar gibi yarı kalıcı alanlar olarak düşünülmelidir.
Bu yöntemi kullanmak için SharedPreferences
isimli bir sınıf kullanılmaktadır.Bu sınıfın içerisinde nested(içiçe) olarak bildirilmiş Editor
isimli bir arayüz bulunmaktadır.SharedPreferences
sınıfının edit metodu ile bu arayüz türünden referans elde edilebilir.
Buna göre SharedPreferences'a kaydetme işlemi aşağıdaki adımlarla yapılabilir.
- Uygulamanın SharedPreferences referansı Context sınıfının
getSharedPreferences
isimli metoduyla elde edilebilir. - Elde Edilen Bu referansla
edit
metodu çağrılarak Edıtor elde edilir. - Elde edilen bu map collection refenrasının
putxx
metodlarıyla Edıtor'e elemanlar eklenir. - Eklenenlerin kaydedilmesi için
commit
ya daapply
metodu çağrılır.
android.Content
isimili paketin içerisinde bildirilimiştir.
SharedPreferences'a ekleme yapıldığında eklemeler bir xml dosyasına yapılır.Bu xml dosyası istenildiği gibi kullanılabilir.Programcının oluşacak dosyasnın ismini vermesi yeterlidir.Xml uzantısı otomatik eklenecektir.
Bu xml dosyası dışarıdan da verilebilir.Bu yüzden xml olarak tutulmaktadır.
[DROPBOX-038-SharedPreferences]
Varolan bir preferences dosyasından okuma yapmak için aşagıdaki adımlar izlenmedlidir.
SharedPreferences
nesnesi alınır.- Preferences nesnesinin
getXX
metodlarıyla daha önce elde edilen anahtarlara ilişkin değerler elde edilip kullanılabilir.
commit
ile apply
arasında küçük bir kaç fark vardır.
commit
metodu commit edilip edilmediğine ilişkin boolean değer döndürür.apply da geri dönüş değeri yoktur.commit
metodu commit işlemi bitene kadar akışı döndürmez senkron çalışır.Ancak apply metodu yazma işlemi yapana kadar beklemez ve akış yoluna devam eder.Bu konu çok thread'li çalışmada ayrıca ele alınacaktır.
Çok büyük verileri Shared Preferences da saklamak tavsiye edilen bir yöntem değildir.Ancak uygulamanın bir takım ayarları gibi basit bilgiler daha sonra elde edilmek üzere Shared Preferences da saklanabilir.
Peki uygulamanın activitysine ait ayar bilgileri ne zaman sharedPreferencesa eklenir ? Bunun en iyi çözüm yeri Activityni yaşam döngüsü içindeki onPause
metodudur.
Daha öncede belirtildiği gibi onStop
ve onDestroy
metodlarının çoğu zaman problem oluşmasada çağrılmasının garantisi yoktur.Bu yüzden en iyi yer onPause
metodunda yapılmasıdır.Şüphesiz Preferences bilgileri onCreate
ya da onResume
da okunabilir.
Bir uygulamaya ilişkin birden fazla Shared Preferences nesnesi olabilir.Bu durumda programcı getSharedPreferences
metdounun 1. parametresine ayrı ayrı isimler geçebilir.
SharedPreferences getSharedPreferences(String name , int mode)