Do not write if apply() did not change the file.
Bug: 33385963
Test: SharedPreferences CTS tests
Change-Id: I39955f8fbcdaa54faa539a3c503e12cb00808136
(cherry picked from commit 1f99f81bdc5e8430717def157f4abe1176d6a88e)
diff --git a/core/java/android/app/SharedPreferencesImpl.java b/core/java/android/app/SharedPreferencesImpl.java
index c5a8288..f273cd8 100644
--- a/core/java/android/app/SharedPreferencesImpl.java
+++ b/core/java/android/app/SharedPreferencesImpl.java
@@ -592,17 +592,17 @@
if (mFile.exists()) {
boolean needsWrite = false;
- if (isFromSyncCommit) {
- // Only need to write if the disk state is older than this commit
- if (mDiskStateGeneration < mcr.memoryStateGeneration) {
+ // Only need to write if the disk state is older than this commit
+ if (mDiskStateGeneration < mcr.memoryStateGeneration) {
+ if (isFromSyncCommit) {
needsWrite = true;
- }
- } else {
- synchronized (this) {
- // No need to persist intermediate states. Just wait for the latest state to be
- // persisted.
- if (mCurrentMemoryStateGeneration == mcr.memoryStateGeneration) {
- needsWrite = true;
+ } else {
+ synchronized (this) {
+ // No need to persist intermediate states. Just wait for the latest state to
+ // be persisted.
+ if (mCurrentMemoryStateGeneration == mcr.memoryStateGeneration) {
+ needsWrite = true;
+ }
}
}
}