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) {