2014-06-12 12 views
5

Sunucu verilerini yerel olarak kaydetmek için SharedPreferences kullanıyorum, cihaz kapalı olduğunda SharedPreferences'daki değerler kayboldu, yine sunucudan indiriliyor.Paylaşılan Tercih değerleri nasıl kaydedilir? Cihaz bile kapalı mı?

public void saveCollection(Context context) 
{ 
    SharedPreferences settings = context.getSharedPreferences(context.getString(R.string.restore_values), 0); 
    SharedPreferences.Editor e = settings.edit(); 
    e.clear(); 
    e.putStringSet(context.getString(R.string.collection), collection); 
    e.commit(); 
} 

Bunu yaptım, ama hayır şans.

+0

Kaydetmediklerini nereden biliyorsunuz? Kodu almayı denediğiniz yere göndermeniz gerekebilir, çünkü ** doğru bir şekilde yapmışsanız, cihaz kapalıyken değerleri ** kaydedecektir. – codeMagic

+1

Bunun SQLite'de depolanmaması gerektiğinden emin misiniz? Sadece merak ediyorum. Burada SQLite örneği: http://stackoverflow.com/questions/24142830/create-offline-sqlite-database-for-groups/24144236#24144236 Ayrıca, aldığınız Tercihlerin gerçekten Uygulama olup olmadığından emin değilim. özel. ApplicationContext'ten SharedPreferences'ı açmayı deneyin. – EpicPandaForce

+0

Şimdi, "cihaz kapanıyor", demek istediğim uyku modunu kastediyorsunuz, doğru mu? –

cevap

-3

Paylaşılan tercihler her zaman dosya sisteminde saklanır, böylece her zaman aygıt kapatıldığında kaydedilirler. Sorununuz, onları depolamaktan ziyade onları okumakta daha fazladır, özellikle de uygulama için varsayılan paylaşımlı tercihi açmıyorsunuz. Doğru tercihleri ​​erişen değildir gibi

+5

Bu bir cevap mıydı? Eğer öyleyse, cevabı kaçırdım. – WarrenFaith

+0

Hiç de değil. Cihaz kapalıyken paylaşılan tercihlerini kaybettiğini belirtti. Bunun bir yolu olmadığını söylüyorum, muhtemelen relanste yanlış okuyordur. –

+3

Ve yine de "cevabınız", bunları nasıl okuyacağınız konusunda herhangi bir bilgi vermez. Sadece "yanlış bir şey yapar" ve onun varsayımlarından birinin doğru olmadığını söyleyerek metniniz için bir nitelik değildir. Bunu bir yorum olarak görmeyi ve cevap olarak görmeyi tercih ederim. Bu yüzden onu değiştirmenizi öneririm veya onu işaretlerim ve topluluk karar verir. – WarrenFaith

0

Her etkinlik gider (varsayarak "Bu" bir bağlam ise). Okuduktan sonra, her Activity odağından alındığında, yerleşik onPause() yöntemini çağırırsınız. Bunu göz önüne aldığımızda, etkinlik için aşağıdaki ekleyebilirsiniz: Şahsen

@Override 
public void onPause() { 
    super.onPause(); // Always call the superclass method first 

    // You can call saveCollection() here and now it will always be called when 
    // the activity is taken away (assuming your app doesn't force close) 
    saveCollection(this); 
} 
0

, ben SharedPreferences nesne almak için bu yöntemi kullanın:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 

Ve senin içinde saveCollection() çağırmalıdır düşünüyorum onPause()

İlgili konular