diff --git a/api/current.xml b/api/current.xml index c04134f61c463..0331d3e9e327d 100644 --- a/api/current.xml +++ b/api/current.xml @@ -45080,7 +45080,7 @@ - mModified = Maps.newHashMap(); private boolean mClear = false; - private AtomicBoolean mCommitInFlight = new AtomicBoolean(false); - public Editor putString(String key, String value) { synchronized (this) { mModified.put(key, value); @@ -2868,11 +2865,7 @@ class ContextImpl extends Context { } } - public void startCommit() { - if (!mCommitInFlight.compareAndSet(false, true)) { - throw new IllegalStateException("can't call startCommit() twice"); - } - + public void apply() { final MemoryCommitResult mcr = commitToMemory(); final Runnable awaitCommit = new Runnable() { public void run() { @@ -2888,7 +2881,6 @@ class ContextImpl extends Context { Runnable postWriteRunnable = new Runnable() { public void run() { awaitCommit.run(); - mCommitInFlight.set(false); QueuedWork.remove(awaitCommit); } }; @@ -3012,13 +3004,13 @@ class ContextImpl extends Context { * that they're enqueued. * * @param postWriteRunnable if non-null, we're being called - * from startCommit() and this is the runnable to run after + * from apply() and this is the runnable to run after * the write proceeds. if null (from a regular commit()), * then we're allowed to do this disk write on the main * thread (which in addition to reducing allocations and * creating a background thread, this has the advantage that * we catch them in userdebug StrictMode reports to convert - * them where possible to startCommit...) + * them where possible to apply() ...) */ private void enqueueDiskWrite(final MemoryCommitResult mcr, final Runnable postWriteRunnable) { diff --git a/core/java/android/content/SharedPreferences.java b/core/java/android/content/SharedPreferences.java index b3db2ac627739..1484204fb5bd7 100644 --- a/core/java/android/content/SharedPreferences.java +++ b/core/java/android/content/SharedPreferences.java @@ -54,13 +54,13 @@ public interface SharedPreferences { /** * Interface used for modifying values in a {@link SharedPreferences} * object. All changes you make in an editor are batched, and not copied - * back to the original {@link SharedPreferences} or persistent storage - * until you call {@link #commit}. + * back to the original {@link SharedPreferences} until you call {@link #commit} + * or {@link #apply} */ public interface Editor { /** * Set a String value in the preferences editor, to be written back once - * {@link #commit} is called. + * {@link #commit} or {@link #apply} are called. * * @param key The name of the preference to modify. * @param value The new value for the preference. @@ -72,7 +72,7 @@ public interface SharedPreferences { /** * Set an int value in the preferences editor, to be written back once - * {@link #commit} is called. + * {@link #commit} or {@link #apply} are called. * * @param key The name of the preference to modify. * @param value The new value for the preference. @@ -84,7 +84,7 @@ public interface SharedPreferences { /** * Set a long value in the preferences editor, to be written back once - * {@link #commit} is called. + * {@link #commit} or {@link #apply} are called. * * @param key The name of the preference to modify. * @param value The new value for the preference. @@ -96,7 +96,7 @@ public interface SharedPreferences { /** * Set a float value in the preferences editor, to be written back once - * {@link #commit} is called. + * {@link #commit} or {@link #apply} are called. * * @param key The name of the preference to modify. * @param value The new value for the preference. @@ -108,7 +108,7 @@ public interface SharedPreferences { /** * Set a boolean value in the preferences editor, to be written back - * once {@link #commit} is called. + * once {@link #commit} or {@link #apply} are called. * * @param key The name of the preference to modify. * @param value The new value for the preference. @@ -159,7 +159,7 @@ public interface SharedPreferences { * *

If you don't care about the return value and you're * using this from your application's main thread, consider - * using {@link #startCommit} instead. + * using {@link #apply} instead. * * @return Returns true if the new values were successfully written * to persistent storage. @@ -173,16 +173,16 @@ public interface SharedPreferences { * in the SharedPreferences. * *

Note that when two editors are modifying preferences at the same - * time, the last one to call commit wins. + * time, the last one to call apply wins. * *

Unlike {@link #commit}, which writes its preferences out - * to persistent storage synchronously, {@link #startCommit} + * to persistent storage synchronously, {@link #apply} * commits its changes to the in-memory * {@link SharedPreferences} immediately but starts an * asynchronous commit to disk and you won't be notified of * any failures. If another editor on this * {@link SharedPreferences} does a regular {@link #commit} - * while a {@link #startCommit} is still outstanding, the + * while a {@link #apply} is still outstanding, the * {@link #commit} will block until all async commits are * completed as well as the commit itself. * @@ -190,7 +190,7 @@ public interface SharedPreferences { * the base class will wait for any async commits to finish in * its {@link android.app.Activity#onPause}.

*/ - void startCommit(); + void apply(); } /** diff --git a/core/java/android/preference/Preference.java b/core/java/android/preference/Preference.java index 1453329cd0a11..dde6493fb3318 100644 --- a/core/java/android/preference/Preference.java +++ b/core/java/android/preference/Preference.java @@ -1195,7 +1195,7 @@ public class Preference implements Comparable, OnDependencyChangeLis private void tryCommit(SharedPreferences.Editor editor) { if (mPreferenceManager.shouldCommit()) { - editor.startCommit(); + editor.apply(); } } diff --git a/core/java/android/server/BluetoothService.java b/core/java/android/server/BluetoothService.java index abd66ae6b568b..b2aa04d68deb3 100644 --- a/core/java/android/server/BluetoothService.java +++ b/core/java/android/server/BluetoothService.java @@ -1737,7 +1737,7 @@ public class BluetoothService extends IBluetooth.Stub { mContext.getSharedPreferences(SHARED_PREFERENCES_NAME, mContext.MODE_PRIVATE).edit(); editor.putBoolean(SHARED_PREFERENCE_DOCK_ADDRESS + mDockAddress, true); - editor.startCommit(); + editor.apply(); } } } diff --git a/services/java/com/android/server/BootReceiver.java b/services/java/com/android/server/BootReceiver.java index d15a05832db29..b9ff8d0ce7bb2 100644 --- a/services/java/com/android/server/BootReceiver.java +++ b/services/java/com/android/server/BootReceiver.java @@ -167,7 +167,7 @@ public class BootReceiver extends BroadcastReceiver { if (lastTime == fileTime) return; // Already logged this particular file // TODO: move all these SharedPreferences Editor commits // outside this function to the end of logBootEvents - prefs.edit().putLong(filename, fileTime).startCommit(); + prefs.edit().putLong(filename, fileTime).apply(); } Slog.i(TAG, "Copying " + filename + " to DropBox (" + tag + ")");