summaryrefslogtreecommitdiffstats
path: root/core/java/android/content
diff options
context:
space:
mode:
authorChristopher Tate <ctate@google.com>2012-10-18 19:01:01 -0700
committerChristopher Tate <ctate@google.com>2012-10-19 13:43:52 -0700
commit01ed79c5786c527628544828abf8b70d02b989cd (patch)
tree41c81bb2fb3a5cfafc8616d4e2172b7655513034 /core/java/android/content
parent69b0c974b5abb38a4443410cf09f7d5f28cf2c7f (diff)
downloadframeworks_base-01ed79c5786c527628544828abf8b70d02b989cd.zip
frameworks_base-01ed79c5786c527628544828abf8b70d02b989cd.tar.gz
frameworks_base-01ed79c5786c527628544828abf8b70d02b989cd.tar.bz2
Document immutable requirement of SharedPreferences return objects
In particular, make it quite clear that the set returned by getStringSet() must not be modfied by the app, period; and add a similar caution about the map returned via getAll(). Also, fix a bug that could lead to unexpected data being committed if the set instance passed to putStringSet() was mutated by the app after that call (including mutations after commit() was invoked). Bug 7312641 Change-Id: If9a1be1b0669ac879ff7a7dc67a8805548ea10cc
Diffstat (limited to 'core/java/android/content')
-rw-r--r--core/java/android/content/SharedPreferences.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/core/java/android/content/SharedPreferences.java b/core/java/android/content/SharedPreferences.java
index bdc38d6..da5480e 100644
--- a/core/java/android/content/SharedPreferences.java
+++ b/core/java/android/content/SharedPreferences.java
@@ -25,7 +25,8 @@ import java.util.Set;
* there is a single instance of this class that all clients share.
* Modifications to the preferences must go through an {@link Editor} object
* to ensure the preference values remain in a consistent state and control
- * when they are committed to storage.
+ * when they are committed to storage. Objects that are returned from the
+ * various <code>get</code> methods must be treated as immutable by the application.
*
* <p><em>Note: currently this class does not support use across multiple
* processes. This will be added later.</em>
@@ -226,6 +227,10 @@ public interface SharedPreferences {
/**
* Retrieve all values from the preferences.
*
+ * <p>Note that you <em>must not</em> modify the collection returned
+ * by this method, or alter any of its contents. The consistency of your
+ * stored data is not guaranteed if you do.
+ *
* @return Returns a map containing a list of pairs key/value representing
* the preferences.
*
@@ -250,6 +255,10 @@ public interface SharedPreferences {
/**
* Retrieve a set of String values from the preferences.
*
+ * <p>Note that you <em>must not</em> modify the set instance returned
+ * by this call. The consistency of the stored data is not guaranteed
+ * if you do, nor is your ability to modify the instance at all.
+ *
* @param key The name of the preference to retrieve.
* @param defValues Values to return if this preference does not exist.
*