diff options
3 files changed, 10 insertions, 13 deletions
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index f49594cb44d1..774be60d082a 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -203,9 +203,6 @@ public class SettingsProvider extends ContentProvider { @GuardedBy("mLock") private HandlerThread mHandlerThread; - @GuardedBy("mLock") - private Handler mBackgroundHandler; - // We have to call in the user manager with no lock held, private volatile UserManager mUserManager; @@ -254,7 +251,6 @@ public class SettingsProvider extends ContentProvider { mHandlerThread = new HandlerThread(LOG_TAG, Process.THREAD_PRIORITY_BACKGROUND); mHandlerThread.start(); - mBackgroundHandler = new Handler(mHandlerThread.getLooper()); mSettingsRegistry = new SettingsRegistry(); } registerBroadcastReceivers(); @@ -1680,7 +1676,7 @@ public class SettingsProvider extends ContentProvider { if (mSettingsStates.get(key) == null) { final int maxBytesPerPackage = getMaxBytesPerPackageForType(getTypeFromKey(key)); SettingsState settingsState = new SettingsState(mLock, getSettingsFile(key), key, - maxBytesPerPackage, mBackgroundHandler); + maxBytesPerPackage, mHandlerThread.getLooper()); mSettingsStates.put(key, settingsState); } } diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java index 1e027475fd69..4710d5adf3ac 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.Looper; import android.os.Message; import android.os.SystemClock; import android.provider.Settings; @@ -27,7 +28,6 @@ import android.util.Base64; 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; @@ -135,14 +135,14 @@ final class SettingsState { private long mNextId; public SettingsState(Object lock, File file, int key, int maxBytesPerAppPackage, - Handler handler) { + Looper looper) { // It is important that we use the same lock as the settings provider // to ensure multiple mutations on this state are atomicaly persisted // as the async persistence should be blocked while we make changes. mLock = lock; mStatePersistFile = file; mKey = key; - mHandler = handler; + mHandler = new MyHandler(looper); if (maxBytesPerAppPackage == MAX_BYTES_PER_APP_PACKAGE_LIMITED) { mMaxBytesPerAppPackage = maxBytesPerAppPackage; mPackageToMemoryUsage = new ArrayMap<>(); @@ -548,8 +548,8 @@ final class SettingsState { private final class MyHandler extends Handler { public static final int MSG_PERSIST_SETTINGS = 1; - public MyHandler() { - super(BackgroundThread.getHandler().getLooper()); + public MyHandler(Looper looper) { + super(looper); } @Override diff --git a/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsStateTest.java b/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsStateTest.java index 53c2958ad914..b5bd8ad3073d 100644 --- a/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsStateTest.java +++ b/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsStateTest.java @@ -16,6 +16,7 @@ package com.android.providers.settings; import android.os.Handler; +import android.os.Looper; import android.test.AndroidTestCase; import android.util.Xml; @@ -127,7 +128,7 @@ public class SettingsStateTest extends AndroidTestCase { final Object lock = new Object(); final SettingsState ssWriter = new SettingsState(lock, file, 1, - SettingsState.MAX_BYTES_PER_APP_PACKAGE_UNLIMITED, new Handler()); + SettingsState.MAX_BYTES_PER_APP_PACKAGE_UNLIMITED, Looper.getMainLooper()); ssWriter.setVersionLocked(SettingsState.SETTINGS_VERSOIN_NEW_ENCODING); ssWriter.insertSettingLocked("k1", "\u0000", "package"); @@ -139,7 +140,7 @@ public class SettingsStateTest extends AndroidTestCase { } final SettingsState ssReader = new SettingsState(lock, file, 1, - SettingsState.MAX_BYTES_PER_APP_PACKAGE_UNLIMITED, new Handler()); + SettingsState.MAX_BYTES_PER_APP_PACKAGE_UNLIMITED, Looper.getMainLooper()); synchronized (lock) { assertEquals("\u0000", ssReader.getSettingLocked("k1").getValue()); assertEquals("abc", ssReader.getSettingLocked("k2").getValue()); @@ -166,7 +167,7 @@ public class SettingsStateTest extends AndroidTestCase { os.close(); final SettingsState ss = new SettingsState(lock, file, 1, - SettingsState.MAX_BYTES_PER_APP_PACKAGE_UNLIMITED, new Handler()); + SettingsState.MAX_BYTES_PER_APP_PACKAGE_UNLIMITED, Looper.getMainLooper()); synchronized (lock) { SettingsState.Setting s; s = ss.getSettingLocked("k0"); |