Do not write if apply() did not change the file.

Bug: 33385963
Test: SharedPreferences CTS tests
Change-Id: I39955f8fbcdaa54faa539a3c503e12cb00808136
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;
+                        }
                     }
                 }
             }