diff options
author | Brad Ebinger <breadley@google.com> | 2017-06-22 22:45:41 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-06-22 22:45:41 +0000 |
commit | 71463b448be896ed8b50e43e116f5005a3989864 (patch) | |
tree | 49ef68abce528fed9dd42e550fc94b72b07d6b63 | |
parent | 586264f9af1ed4fc59a0da8a677e06d1266ee2c3 (diff) | |
parent | ab749c4181778f26e6078b269271cc2c6b96b37c (diff) | |
download | ims-71463b448be896ed8b50e43e116f5005a3989864.tar.gz |
Reconnect when ImsService binder instance is null am: ff0979256d
am: ab749c4181
Change-Id: I34795af5a91fdb114611ad70d175f6b680546e03
-rw-r--r-- | src/java/com/android/ims/ImsManager.java | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java index 080c372c..7cb192cb 100644 --- a/src/java/com/android/ims/ImsManager.java +++ b/src/java/com/android/ims/ImsManager.java @@ -228,7 +228,12 @@ public class ImsManager { public static ImsManager getInstance(Context context, int phoneId) { synchronized (sImsManagerInstances) { if (sImsManagerInstances.containsKey(phoneId)) { - return sImsManagerInstances.get(phoneId); + ImsManager m = sImsManagerInstances.get(phoneId); + // May be null for some tests + if (m != null) { + m.connectIfServiceIsAvailable(); + } + return m; } ImsManager mgr = new ImsManager(context, phoneId); @@ -1428,16 +1433,24 @@ public class ImsManager { } /* - * Returns a flag indicating whether the IMS service is available. + * Returns a flag indicating whether the IMS service is available. If it is not available, + * it will try to connect before reporting failure. */ public boolean isServiceAvailable() { - if (mImsServiceProxy == null) { - createImsService(); - } + connectIfServiceIsAvailable(); // mImsServiceProxy will always create an ImsServiceProxy. return mImsServiceProxy.isBinderAlive(); } + /** + * If the service is available, try to reconnect. + */ + public void connectIfServiceIsAvailable() { + if (mImsServiceProxy == null || !mImsServiceProxy.isBinderAlive()) { + createImsService(); + } + } + public void setImsConfigListener(ImsConfigListener listener) { mImsConfigListener = listener; } |