diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java index 9e706c4179e..ecc7a511425 100644 --- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java +++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java @@ -148,6 +148,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 @@ -277,11 +278,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; }