am 3618ac30: Fixed shared preferences
* commit '3618ac3095b0df01327644ac17df7e2fb9202dfc':
Fixed shared preferences
diff --git a/src/com/android/mail/persistence/Persistence.java b/src/com/android/mail/persistence/Persistence.java
index 408a814..4b5319c 100644
--- a/src/com/android/mail/persistence/Persistence.java
+++ b/src/com/android/mail/persistence/Persistence.java
@@ -17,6 +17,7 @@
package com.android.mail.persistence;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.Maps;
import android.content.Context;
import android.content.SharedPreferences;
@@ -24,6 +25,7 @@
import com.android.mail.utils.LogTag;
+import java.util.Map;
import java.util.Set;
/**
@@ -36,7 +38,7 @@
private static Persistence mInstance = null;
- private static SharedPreferences sSharedPrefs;
+ private static final Map<String, SharedPreferences> SHARED_PREFS_MAP = Maps.newHashMap();
protected Persistence() {
// Singleton only, use getInstance()
@@ -58,11 +60,15 @@
}
public SharedPreferences getPreferences(Context context) {
- if (sSharedPrefs == null) {
- sSharedPrefs = context.getSharedPreferences(
- getSharedPreferencesName(), Context.MODE_PRIVATE);
+ final String sharedPrefName = getSharedPreferencesName();
+ synchronized (SHARED_PREFS_MAP) {
+ SharedPreferences preferences = SHARED_PREFS_MAP.get(sharedPrefName);
+ if (preferences == null) {
+ preferences = context.getSharedPreferences(sharedPrefName, Context.MODE_PRIVATE);
+ SHARED_PREFS_MAP.put(sharedPrefName, preferences);
+ }
+ return preferences;
}
- return sSharedPrefs;
}
protected String makeKey(String account, String key) {