summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@android.com>2010-09-06 22:17:12 -0700
committerBrad Fitzpatrick <bradfitz@android.com>2010-09-06 22:18:39 -0700
commit6f9d58ac62366b13a1eac00d58ebc84f03cea3f2 (patch)
tree9309e0a55f0efae669f78171e6f48fd48dfb5a7c
parent960b31e3b3b40f92665be4b7a79da7f05ea19751 (diff)
downloadframeworks_base-6f9d58ac62366b13a1eac00d58ebc84f03cea3f2.zip
frameworks_base-6f9d58ac62366b13a1eac00d58ebc84f03cea3f2.tar.gz
frameworks_base-6f9d58ac62366b13a1eac00d58ebc84f03cea3f2.tar.bz2
Make SharedPreferencesBackupHelper wait for async SharedPreference writes
Fixes a potential race with backups. Change-Id: I73492c0384091cedd7802109257312387fcd43f9
-rw-r--r--core/java/android/app/backup/SharedPreferencesBackupHelper.java8
1 files changed, 6 insertions, 2 deletions
diff --git a/core/java/android/app/backup/SharedPreferencesBackupHelper.java b/core/java/android/app/backup/SharedPreferencesBackupHelper.java
index 23b1703..213bd31 100644
--- a/core/java/android/app/backup/SharedPreferencesBackupHelper.java
+++ b/core/java/android/app/backup/SharedPreferencesBackupHelper.java
@@ -16,6 +16,7 @@
package android.app.backup;
+import android.app.QueuedWork;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.ParcelFileDescriptor;
@@ -94,7 +95,11 @@ public class SharedPreferencesBackupHelper extends FileBackupHelperBase implemen
public void performBackup(ParcelFileDescriptor oldState, BackupDataOutput data,
ParcelFileDescriptor newState) {
Context context = mContext;
-
+
+ // If a SharedPreference has an outstanding write in flight,
+ // wait for it to finish flushing to disk.
+ QueuedWork.waitToFinish();
+
// make filenames for the prefGroups
String[] prefGroups = mPrefGroups;
final int N = prefGroups.length;
@@ -123,4 +128,3 @@ public class SharedPreferencesBackupHelper extends FileBackupHelperBase implemen
}
}
}
-