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
getSharedPreferencesisimli metoduyla elde edilebilir. - Elde Edilen Bu referansla
editmetodu çağrılarak Edıtor elde edilir. - Elde edilen bu map collection refenrasının
putxxmetodlarıyla Edıtor'e elemanlar eklenir. - Eklenenlerin kaydedilmesi için
commitya daapplymetodu ç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.
SharedPreferencesnesnesi alınır.- Preferences nesnesinin
getXXmetodları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.
commitmetodu commit edilip edilmediğine ilişkin boolean değer döndürür.apply da geri dönüş değeri yoktur.commitmetodu 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)