aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Ebinger <breadley@google.com>2017-06-22 22:45:41 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-06-22 22:45:41 +0000
commit71463b448be896ed8b50e43e116f5005a3989864 (patch)
tree49ef68abce528fed9dd42e550fc94b72b07d6b63
parent586264f9af1ed4fc59a0da8a677e06d1266ee2c3 (diff)
parentab749c4181778f26e6078b269271cc2c6b96b37c (diff)
downloadims-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.java23
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;
}