summaryrefslogtreecommitdiffstats
path: root/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
diff options
context:
space:
mode:
authorSvetoslav <svetoslavganov@google.com>2015-03-13 12:08:42 -0700
committerSvetoslav <svetoslavganov@google.com>2015-03-13 12:08:45 -0700
commitd289e64a2d7c8efba78b9066b647ee321eba701a (patch)
treee92b1fde9d815726225e2b0c1c12eca89964f973 /packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
parentc6ee744a90a4a84df93b6631ca7df8736ef320e1 (diff)
downloadframeworks_base-d289e64a2d7c8efba78b9066b647ee321eba701a.zip
frameworks_base-d289e64a2d7c8efba78b9066b647ee321eba701a.tar.gz
frameworks_base-d289e64a2d7c8efba78b9066b647ee321eba701a.tar.bz2
Persist settings on a normal priority thread.
We were doing the work for persisting settings on a background priority thread and as a result persistence was not happening correctly on a low end devices. Now we use a worker thread with normal priority. bug:19611897 Change-Id: I378c6e324935f5e3def8b986bd48486bfab55265
Diffstat (limited to 'packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java')
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java26
1 files changed, 23 insertions, 3 deletions
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
index 3bf6828..84e66ff 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
@@ -17,6 +17,7 @@
package com.android.providers.settings;
import android.os.Handler;
+import android.os.HandlerThread;
import android.os.Message;
import android.os.SystemClock;
import android.provider.Settings;
@@ -26,7 +27,6 @@ import android.util.AtomicFile;
import android.util.Slog;
import android.util.Xml;
import com.android.internal.annotations.GuardedBy;
-import com.android.internal.os.BackgroundThread;
import libcore.io.IoUtils;
import libcore.util.Objects;
import org.xmlpull.v1.XmlPullParser;
@@ -153,7 +153,7 @@ final class SettingsState {
final int settingCount = mSettings.size();
for (int i = settingCount - 1; i >= 0; i--) {
String name = mSettings.keyAt(i);
- // Settings defined by use are never dropped.
+ // Settings defined by us are never dropped.
if (Settings.System.PUBLIC_SETTINGS.contains(name)
|| Settings.System.PRIVATE_SETTINGS.contains(name)) {
continue;
@@ -494,7 +494,7 @@ final class SettingsState {
public static final int MSG_PERSIST_SETTINGS = 1;
public MyHandler() {
- super(BackgroundThread.getHandler().getLooper());
+ super(PersistThread.getInstance().getLooper());
}
@Override
@@ -574,4 +574,24 @@ final class SettingsState {
return true;
}
}
+
+ private static final class PersistThread extends HandlerThread {
+ private static final Object sLock = new Object();
+
+ private static PersistThread sInstance;
+
+ private PersistThread() {
+ super("settings.persist");
+ }
+
+ public static PersistThread getInstance() {
+ synchronized (sLock) {
+ if (sInstance == null) {
+ sInstance = new PersistThread();
+ sInstance.start();
+ }
+ return sInstance;
+ }
+ }
+ }
}