diff options
3 files changed, 27 insertions, 10 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractConnectivityPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractConnectivityPreferenceController.java index f4e050c76b19..c6552f77a2b2 100644 --- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractConnectivityPreferenceController.java +++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractConnectivityPreferenceController.java @@ -43,18 +43,20 @@ public abstract class AbstractConnectivityPreferenceController public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (ArrayUtils.contains(getConnectivityIntents(), action)) { - mHandler.sendEmptyMessage(EVENT_UPDATE_CONNECTIVITY); + getHandler().sendEmptyMessage(EVENT_UPDATE_CONNECTIVITY); } } }; private static final int EVENT_UPDATE_CONNECTIVITY = 600; - private final Handler mHandler = new ConnectivityEventHandler(this); + private Handler mHandler; public AbstractConnectivityPreferenceController(Context context, Lifecycle lifecycle) { super(context); - lifecycle.addObserver(this); + if (lifecycle != null) { + lifecycle.addObserver(this); + } } @Override @@ -78,6 +80,13 @@ public abstract class AbstractConnectivityPreferenceController protected abstract void updateConnectivity(); + private Handler getHandler() { + if (mHandler == null) { + mHandler = new ConnectivityEventHandler(this); + } + return mHandler; + } + private static class ConnectivityEventHandler extends Handler { private WeakReference<AbstractConnectivityPreferenceController> mPreferenceController; diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractUptimePreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractUptimePreferenceController.java index f675d3e5c0b3..ac61ade19222 100644 --- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractUptimePreferenceController.java +++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractUptimePreferenceController.java @@ -44,21 +44,23 @@ public abstract class AbstractUptimePreferenceController extends AbstractPrefere private static final int EVENT_UPDATE_STATS = 500; private Preference mUptime; - private final Handler mHandler = new MyHandler(this); + private Handler mHandler; public AbstractUptimePreferenceController(Context context, Lifecycle lifecycle) { super(context); - lifecycle.addObserver(this); + if (lifecycle != null) { + lifecycle.addObserver(this); + } } @Override public void onStart() { - mHandler.sendEmptyMessage(EVENT_UPDATE_STATS); + getHandler().sendEmptyMessage(EVENT_UPDATE_STATS); } @Override public void onStop() { - mHandler.removeMessages(EVENT_UPDATE_STATS); + getHandler().removeMessages(EVENT_UPDATE_STATS); } @Override @@ -78,6 +80,13 @@ public abstract class AbstractUptimePreferenceController extends AbstractPrefere updateTimes(); } + private Handler getHandler() { + if (mHandler == null) { + mHandler = new MyHandler(this); + } + return mHandler; + } + private void updateTimes() { mUptime.setSummary(DateUtils.formatDuration(SystemClock.elapsedRealtime())); } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/UptimePreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/UptimePreferenceControllerTest.java index 666a2a8ff413..f68533ba4081 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/UptimePreferenceControllerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/UptimePreferenceControllerTest.java @@ -31,14 +31,13 @@ import com.android.settingslib.SettingsLibRobolectricTestRunner; import com.android.settingslib.TestConfig; import com.android.settingslib.core.lifecycle.Lifecycle; -import org.robolectric.shadows.ShadowLooper; - import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowLooper; @RunWith(SettingsLibRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) @@ -73,7 +72,7 @@ public class UptimePreferenceControllerTest { @Test public void testUptimeTick() { final AbstractUptimePreferenceController uptimePreferenceController = - new ConcreteUptimePreferenceController(mContext, mLifecycle); + new ConcreteUptimePreferenceController(mContext, null /* lifecycle */); uptimePreferenceController.displayPreference(mScreen); |