diff --git a/src/com/android/settings/bluetooth/BlockingPrefWithSliceController.java b/src/com/android/settings/bluetooth/BlockingPrefWithSliceController.java index b443047d7e8..93a2747cac0 100644 --- a/src/com/android/settings/bluetooth/BlockingPrefWithSliceController.java +++ b/src/com/android/settings/bluetooth/BlockingPrefWithSliceController.java @@ -113,15 +113,27 @@ public class BlockingPrefWithSliceController extends BasePreferenceController im @Override public void onStart() { - if (mLiveData != null) { + if (mLiveData == null) { + return; + } + + try { mLiveData.observeForever(this); + } catch (SecurityException e) { + Log.w(TAG, "observeForever - no permission"); } } @Override public void onStop() { - if (mLiveData != null) { + if (mLiveData == null) { + return; + } + + try { mLiveData.removeObserver(this); + } catch (SecurityException e) { + Log.w(TAG, "removeObserver - no permission"); } } diff --git a/src/com/android/settings/slices/SlicePreferenceController.java b/src/com/android/settings/slices/SlicePreferenceController.java index eb10bd42be1..9a88b5626dc 100644 --- a/src/com/android/settings/slices/SlicePreferenceController.java +++ b/src/com/android/settings/slices/SlicePreferenceController.java @@ -44,7 +44,6 @@ public class SlicePreferenceController extends BasePreferenceController implemen LiveData mLiveData; @VisibleForTesting SlicePreference mSlicePreference; - private boolean mIsObservering = false; private Uri mUri; public SlicePreferenceController(Context context, String preferenceKey) { @@ -74,9 +73,14 @@ public class SlicePreferenceController extends BasePreferenceController implemen @Override public void onStart() { - if (mLiveData != null && !mIsObservering) { - mIsObservering = true; + if (mLiveData == null) { + return; + } + + try { mLiveData.observeForever(this); + } catch (SecurityException e) { + Log.w(TAG, "observeForever - no permission"); } } @@ -91,9 +95,14 @@ public class SlicePreferenceController extends BasePreferenceController implemen } private void removeLiveDataObserver() { - if (mLiveData != null && mIsObservering && mLiveData.hasActiveObservers()) { - mIsObservering = false; + if (mLiveData == null) { + return; + } + + try { mLiveData.removeObserver(this); + } catch (SecurityException e) { + Log.w(TAG, "removeLiveDataObserver - no permission"); } } }