diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java index 370bdfb686e..9858ad21026 100644 --- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java +++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java @@ -152,6 +152,7 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O private final Context mContext; private boolean mShowLatestAreaInfo; + private boolean mIsRegisteredListener = false; private final BroadcastReceiver mAreaInfoReceiver = new BroadcastReceiver() { @Override @@ -282,11 +283,22 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O mContext.registerReceiver(mAreaInfoReceiver, new IntentFilter(CellBroadcastIntents.ACTION_AREA_INFO_UPDATED)); } + + mIsRegisteredListener = true; } @Override public void onPause() { if (mSubscriptionInfo == null) { + if (mIsRegisteredListener) { + mSubscriptionManager.removeOnSubscriptionsChangedListener( + mOnSubscriptionsChangedListener); + mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE); + if (mShowLatestAreaInfo) { + mContext.unregisterReceiver(mAreaInfoReceiver); + } + mIsRegisteredListener = false; + } return; }