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 da apply 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)