diff options
-rw-r--r-- | src/java/com/android/ims/ImsManager.java | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java index 0b540e82..5996c9a6 100644 --- a/src/java/com/android/ims/ImsManager.java +++ b/src/java/com/android/ims/ImsManager.java @@ -332,15 +332,18 @@ public class ImsManager { private void retryGetImsService() { synchronized (mLock) { - // remove callback so we do not receive updates from old ImsServiceProxy when - // switching between ImsServices. - mImsManager.removeNotifyStatusChangedCallback(mNotifyStatusChangedCallback); - //Leave mImsManager as null, then CallStateException will be thrown when dialing - mImsManager = null; + if (mImsManager != null) { + // remove callback so we do not receive updates from old ImsServiceProxy when + // switching between ImsServices. + mImsManager.removeNotifyStatusChangedCallback(mNotifyStatusChangedCallback); + //Leave mImsManager as null, then CallStateException will be thrown when dialing + mImsManager = null; + } + + // Exponential backoff during retry, limited to 32 seconds. + removeCallbacks(mGetServiceRunnable); + postDelayed(mGetServiceRunnable, mRetryTimeout.get()); } - // Exponential backoff during retry, limited to 32 seconds. - removeCallbacks(mGetServiceRunnable); - postDelayed(mGetServiceRunnable, mRetryTimeout.get()); } private void getImsService() throws ImsException { |