2013-03-19 37 views
6

Uygulamam, kullanıcı bir düğmeyi tıklattığında (sık sık yapılan, hesap makinesini düşünün) bir ses çıkarıp çalmadığını denetleyen bir tercihim var. çünkü (tercihleri ​​kalıcı çünkü bir I/O operasyonuna benzer)Okuma/Yazma Tercihleri ​​Pahalı Bir İşlem mi?

private void playButtonClickSound() { 
    SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(parentActivity); 
    boolean sounds = sharedPrefs.getBoolean("prefSounds", false); 
    if (sounds) { 
     // blah 
    } 
} 

O okuma tercihlerini düşünüyordum bir pahalı operasyon olabilir ve bu: Her zaman kullanıcı aşağıdaki yöntemi denir düğmesini tıkladığında kullanıcı düğmelerini sık sık tıklarsa bu şekilde yapmak kötü bir fikir olabilir.

Genel olarak tercihleri ​​sıkça okumak/yazmak kötü bir fikir midir? Eğer öyleyse, bir tercih değiştiğinde bildirim almak için tercih değişikliği dinleyicisi kayıt olmak gibi başka bir yol olabilir mi?

cevap

5

Açıkçası, tüm kullanıcı arabiriminde UI iş parçacığı üzerinde yapmalıyım, yapmalıyım ya da yapmam, ve daha yavaş aygıtlarda bile hiç tereddüt etmemiştim. Bu çok hızlı. Bu, 'un I/O olduğunu, bu nedenle asenkron olarak kesinlikle hatalı bir şey olmaz dedi. Yazımlar için, API 9 ve üzerini hedefliyorsanız,yerine apply()'u kullanabilirsiniz; bu, sizin için senkronize olmayan bir şekilde yapar.

bir tercih değişikliği dinleyici üzerinde Sorunuza gelince, evet siz de bunu yapabilirsiniz:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
prefs.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener() { 
    @Override 
    public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { 
     if("my_preference_key".equals(key) { 
      //Handle it here 
     } 
    } 
} 
+1

Gelecekte bunu nasıl yapacağım. :) –

0

Java References kullanarak bellek önbelleğinde uygulayabilirsiniz. Aşağıdakileri yapabilirsiniz G/Ç işleminin sayısını en aza indirgeyecektir. Bu, aşağıdakileri yapabilir: I/O işleminin sayısını en aza indirecektir.

+0

Ben böyle kesin tür yapmayı düşünüyordum! –