@@ -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