summaryrefslogtreecommitdiffstats
path: root/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
diff options
context:
space:
mode:
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;
+ }
+ }
+ }
}