diff --git a/graphenej/src/main/java/cy/agorise/graphenej/api/android/NetworkService.java b/graphenej/src/main/java/cy/agorise/graphenej/api/android/NetworkService.java index d637e6c..91e126e 100644 --- a/graphenej/src/main/java/cy/agorise/graphenej/api/android/NetworkService.java +++ b/graphenej/src/main/java/cy/agorise/graphenej/api/android/NetworkService.java @@ -230,9 +230,11 @@ public class NetworkService extends Service { .build(); mSelectedNode = nodeProvider.getBestNode(); if(mSelectedNode != null){ + Log.d(TAG,"Trying to connect to: "+ mSelectedNode.getUrl()); Request request = new Request.Builder().url(mSelectedNode.getUrl()).build(); mWebSocket = client.newWebSocket(request, mWebSocketListener); }else{ + Log.d(TAG,"Could not find best node, reescheduling"); // If no node could be found yet, schedule a new attempt in DEFAULT_INITIAL_DELAY ms mHandler.postDelayed(mConnectAttempt, DEFAULT_INITIAL_DELAY); } @@ -797,4 +799,6 @@ public class NetworkService extends Service { public PublishSubject getNodeLatencyObservable(){ return fullNodePublishSubject; } + + public NodeLatencyVerifier getNodeLatencyVerifier(){ return nodeLatencyVerifier; } } diff --git a/graphenej/src/main/java/cy/agorise/graphenej/api/android/NetworkServiceManager.java b/graphenej/src/main/java/cy/agorise/graphenej/api/android/NetworkServiceManager.java index c64aa1b..491857d 100644 --- a/graphenej/src/main/java/cy/agorise/graphenej/api/android/NetworkServiceManager.java +++ b/graphenej/src/main/java/cy/agorise/graphenej/api/android/NetworkServiceManager.java @@ -54,7 +54,8 @@ public class NetworkServiceManager implements Application.ActivityLifecycleCallb private List mCustomNodeUrls = new ArrayList<>(); private boolean mAutoConnect; private boolean mVerifyLatency; - private double alpha; + // Flag used to make sure we only call 'bindService' once. + private boolean mStartingService; /** * Runnable used to schedule a service disconnection once the app is not visible to the user for @@ -85,7 +86,9 @@ public class NetworkServiceManager implements Application.ActivityLifecycleCallb @Override public void onActivityResumed(Activity activity) { mHandler.removeCallbacks(mDisconnectRunnable); - if(mService == null){ + if(mService == null && !mStartingService){ + // Setting this flag to 'true' to avoid repeated calls to the bindService. + mStartingService = true; // Creating a new Intent that will be used to start the NetworkService Context context = mContextReference.get(); Intent intent = new Intent(context, NetworkService.class); @@ -143,12 +146,15 @@ public class NetworkServiceManager implements Application.ActivityLifecycleCallb // We've bound to LocalService, cast the IBinder and get LocalService instance NetworkService.LocalBinder binder = (NetworkService.LocalBinder) service; mService = binder.getService(); - + // Setting the 'starting service' flag back to false + mStartingService = false; passRequiredInfoToConfigureService(); } @Override - public void onServiceDisconnected(ComponentName componentName) {} + public void onServiceDisconnected(ComponentName componentName) { + mStartingService = false; + } }; public String getUserName() { diff --git a/graphenej/src/main/java/cy/agorise/graphenej/network/NodeLatencyVerifier.java b/graphenej/src/main/java/cy/agorise/graphenej/network/NodeLatencyVerifier.java index 076ddfd..69b23b1 100644 --- a/graphenej/src/main/java/cy/agorise/graphenej/network/NodeLatencyVerifier.java +++ b/graphenej/src/main/java/cy/agorise/graphenej/network/NodeLatencyVerifier.java @@ -203,4 +203,8 @@ public class NodeLatencyVerifier { } } } + + public List getNodeList(){ + return mNodeList; + } }