Handle Looper in PreferenceController
When indexing content in search, the preference controllers
are init'd on the background thread, thus you can't create a
handler without calling Looper.prepare().
We have PreferenceConttrollerContractTest to catch these
errors, but it was not running in presubmit.
Bug tracking: b/73242024
This caused the indexing thread to crash, thus
not adding any non-indexable keys for settings results.
Test: atest PreferenceControllerContractTest
Fixes: 73168342
Change-Id: I89fe596435d317bb3e3baebdaace97a67700d77e
diff --git a/src/com/android/settings/fuelgauge/batterysaver/AutoBatterySeekBarPreferenceController.java b/src/com/android/settings/fuelgauge/batterysaver/AutoBatterySeekBarPreferenceController.java
index 1c787ab..1cc72a7 100644
--- a/src/com/android/settings/fuelgauge/batterysaver/AutoBatterySeekBarPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batterysaver/AutoBatterySeekBarPreferenceController.java
@@ -20,6 +20,7 @@
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Handler;
+import android.os.Looper;
import android.provider.Settings;
import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference;
@@ -46,7 +47,7 @@
public AutoBatterySeekBarPreferenceController(Context context, Lifecycle lifecycle) {
super(context, KEY_AUTO_BATTERY_SEEK_BAR);
- mContentObserver = new AutoBatterySaverSettingObserver(new Handler());
+ mContentObserver = new AutoBatterySaverSettingObserver(new Handler(Looper.getMainLooper()));
if (lifecycle != null) {
lifecycle.addObserver(this);
}