Fix issue #3138926: App's preferences can be lost after onPause()

Change-Id: Icea3d37fab5e47c89c5cbc0adff7bbec898fa93e
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 78a77eb..f25c4c3 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -1162,7 +1162,6 @@
      */
     protected void onPause() {
         mCalled = true;
-        QueuedWork.waitToFinish();
     }
 
     /**
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 63a5ff6..78df780 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -2265,6 +2265,9 @@
             r.activity.mConfigChangeFlags |= configChanges;
             Bundle state = performPauseActivity(token, finished, true);
 
+            // Make sure any pending writes are now committed.
+            QueuedWork.waitToFinish();
+            
             // Tell the activity manager we have paused.
             try {
                 ActivityManagerNative.getDefault().activityPaused(token, state);