Skip to content

Commit 0458b73

Browse files
committed
(android) Register network monitoring in start/stop methods
1 parent f1a4107 commit 0458b73

File tree

1 file changed

+40
-45
lines changed

1 file changed

+40
-45
lines changed

phoenix-shared/src/androidMain/kotlin/fr/acinq/phoenix/managers/NetworkMonitorAndroid.kt

Lines changed: 40 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -18,53 +18,44 @@ actual class NetworkMonitor actual constructor(loggerFactory: LoggerFactory, val
1818
private val _networkState = MutableStateFlow(NetworkState.NotAvailable)
1919
actual val networkState: StateFlow<NetworkState> = _networkState
2020

21-
init {
22-
launch {
23-
val connectivityManager = ctx.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
24-
connectivityManager.registerDefaultNetworkCallback(
25-
object : ConnectivityManager.NetworkCallback() {
26-
27-
override fun onAvailable(network: Network) {
28-
super.onAvailable(network)
29-
logger.debug { "network is now $network" }
30-
connectivityManager.isDefaultNetworkActive
31-
_networkState.value = NetworkState.Available
32-
}
33-
34-
override fun onBlockedStatusChanged(network: Network, blocked: Boolean) {
35-
super.onBlockedStatusChanged(network, blocked)
36-
logger.debug { "block status change to $blocked for network=$network"}
37-
}
38-
39-
override fun onCapabilitiesChanged(network : Network, networkCapabilities : NetworkCapabilities) {
40-
logger.debug { "default network changed capabilities to $networkCapabilities" }
41-
}
42-
43-
override fun onLinkPropertiesChanged(network : Network, linkProperties : LinkProperties) {
44-
logger.debug { "default network changed link properties to $linkProperties" }
45-
}
46-
47-
override fun onLosing(network: Network, maxMsToLive: Int) {
48-
super.onLosing(network, maxMsToLive)
49-
logger.debug { "losing network in ${maxMsToLive}ms..." }
50-
}
51-
52-
override fun onLost(network: Network) {
53-
super.onLost(network)
54-
logger.info { "network has been lost" }
55-
_networkState.value = NetworkState.NotAvailable
56-
}
57-
58-
override fun onUnavailable() {
59-
super.onUnavailable()
60-
logger.info { "network is unavailable" }
61-
_networkState.value = NetworkState.NotAvailable
62-
}
63-
}
64-
)
21+
private val networkCallback = object : ConnectivityManager.NetworkCallback() {
22+
23+
override fun onAvailable(network: Network) {
24+
super.onAvailable(network)
25+
logger.debug { "network is now $network" }
26+
_networkState.value = NetworkState.Available
27+
}
28+
29+
override fun onBlockedStatusChanged(network: Network, blocked: Boolean) {
30+
super.onBlockedStatusChanged(network, blocked)
31+
logger.debug { "block status change to $blocked for network=$network"}
32+
}
33+
34+
override fun onCapabilitiesChanged(network : Network, networkCapabilities : NetworkCapabilities) {
35+
logger.debug { "default network changed capabilities to $networkCapabilities" }
36+
}
37+
38+
override fun onLinkPropertiesChanged(network : Network, linkProperties : LinkProperties) {
39+
logger.debug { "default network changed link properties to $linkProperties" }
40+
}
41+
42+
override fun onLosing(network: Network, maxMsToLive: Int) {
43+
super.onLosing(network, maxMsToLive)
44+
logger.debug { "losing network in ${maxMsToLive}ms..." }
6545
}
66-
}
6746

47+
override fun onLost(network: Network) {
48+
super.onLost(network)
49+
logger.info { "network has been lost" }
50+
_networkState.value = NetworkState.NotAvailable
51+
}
52+
53+
override fun onUnavailable() {
54+
super.onUnavailable()
55+
logger.info { "network is unavailable" }
56+
_networkState.value = NetworkState.NotAvailable
57+
}
58+
}
6859

6960
actual fun enable() {
7061
}
@@ -73,8 +64,12 @@ actual class NetworkMonitor actual constructor(loggerFactory: LoggerFactory, val
7364
}
7465

7566
actual fun start() {
67+
val connectivityManager = ctx.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
68+
connectivityManager.registerDefaultNetworkCallback(networkCallback)
7669
}
7770

7871
actual fun stop() {
72+
val connectivityManager = ctx.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
73+
connectivityManager.unregisterNetworkCallback(networkCallback)
7974
}
8075
}

0 commit comments

Comments
 (0)