Skip to content

Commit f847dd7

Browse files
authored
Allow multiple components to call requestConnectivityUpdates or removeConnectivityUpdates on ConnectivityReceiver. (#371)
1 parent 7e05757 commit f847dd7

1 file changed

Lines changed: 12 additions & 2 deletions

File tree

mapbox/libandroid-telemetry/src/main/java/com/mapbox/services/android/telemetry/connectivity/ConnectivityReceiver.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import android.content.IntentFilter;
77
import android.net.ConnectivityManager;
88
import android.net.NetworkInfo;
9+
import android.support.annotation.UiThread;
910

1011
import java.util.concurrent.CopyOnWriteArrayList;
1112

@@ -26,6 +27,7 @@ public class ConnectivityReceiver extends BroadcastReceiver {
2627
private Context context;
2728
private CopyOnWriteArrayList<ConnectivityListener> connectivityListeners;
2829
private Boolean connectedFlag;
30+
private int activationCounter;
2931

3032
/**
3133
* ConnectivityReceiver constructor
@@ -113,12 +115,20 @@ public boolean removeConnectivityListener(ConnectivityListener listener) {
113115
return connectivityListeners.remove(listener);
114116
}
115117

118+
@UiThread
116119
public void requestConnectivityUpdates() {
117-
context.registerReceiver(this, new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE"));
120+
if (activationCounter == 0) {
121+
context.registerReceiver(this, new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE"));
122+
}
123+
activationCounter++;
118124
}
119125

126+
@UiThread
120127
public void removeConnectivityUpdates() {
121-
context.unregisterReceiver(this);
128+
activationCounter--;
129+
if (activationCounter == 0) {
130+
context.unregisterReceiver(this);
131+
}
122132
}
123133

124134
@Override

0 commit comments

Comments
 (0)