@@ -75,99 +75,92 @@ class NetworkConnectionListener(
7575 val validated = caps?.hasCapability(NetworkCapabilities .NET_CAPABILITY_VALIDATED ) ? : false
7676 val httpProxy = props?.httpProxy
7777
78- val initialState = NetworkState (
78+ val activeNetworkState = NetworkState (
7979 available = hasInternet,
8080 validated = validated,
8181 httpProxy = httpProxy,
8282 )
8383
84- onInitialConnectionState(network, initialState)
84+ Log .d(TAG , " Active network snapshot: $activeNetworkState (network=$network )" )
85+ onInitialConnectionState(network, activeNetworkState)
8586 }
8687
8788 fun stopMonitoring () {
8889 connectivityManager.unregisterNetworkCallback(this )
8990 }
9091
91- private fun connectivityChangedLocked (): NetworkState ? {
92+ private fun updateConnectionState (): NetworkState ? {
9293 val newState = networks.bestNetworkState()
9394 val oldState = connectionState
9495
9596 return if (newState != oldState) {
9697 connectionState = newState
9798 if (oldState == null ) {
98- Log .v (TAG , " Network state initialized -> $newState " )
99+ Log .i (TAG , " Network state initialized -> $newState " )
99100 } else {
100- Log .v (TAG , " Network state changed: $oldState -> $newState " )
101+ Log .i (TAG , " Network state changed: $oldState -> $newState " )
101102 }
102103 newState
103104 } else null
104105 }
105106
106- private fun NetworkState.dispatch () {
107- onNetworkChange(this )
108- }
109-
110107 private fun Map <Network , NetworkState >.bestNetworkState (): NetworkState =
111108 values.firstOrNull { it.validated }
112109 ? : values.firstOrNull { it.available }
113110 ? : NetworkState .DOWN
114111
115112 private fun onInitialConnectionState (network : Network ? , state : NetworkState ) {
116- val maybeNew = synchronized(this ) {
113+ synchronized(this ) {
117114 if (connectionState == null ) {
118115 if (network != null ) {
119116 networks[network] = state
120117 }
121- connectivityChangedLocked ()
118+ updateConnectionState ()
122119 } else {
123120 Log .v(TAG , " Initial state skipped; already set: $connectionState " )
124121 null
125122 }
126- }
127-
128- maybeNew?.dispatch()
123+ }?.notifyChange()
129124 }
130125
131126 override fun onLinkPropertiesChanged (network : Network , linkProperties : LinkProperties ) {
132127 Log .d(TAG , " NetworkCallback onLinkPropertiesChanged($network )" )
133128 val httpProxy = linkProperties.httpProxy
134- val maybeNew = synchronized(this ) {
129+ synchronized(this ) {
135130 val existing = networks.getOrDefault(
136131 network,
137132 NetworkState (available = true , validated = false , httpProxy = httpProxy)
138133 )
139134 val state = existing.copy(httpProxy = httpProxy)
140135 networks[network] = state
141- connectivityChangedLocked()
142- }
143-
144- maybeNew?.dispatch()
136+ updateConnectionState()
137+ }?.notifyChange()
145138 }
146139
147140 override fun onBlockedStatusChanged (network : Network , blocked : Boolean ) {
148141 Log .d(TAG , " NetworkCallback onBlockedStatusChanged($network , $blocked )" )
149142 val validated = ! blocked
150- val maybeNew = synchronized(this ) {
143+ synchronized(this ) {
151144 val existing = networks.getOrDefault(
152145 network,
153146 NetworkState (available = true , validated = validated, httpProxy = null )
154147 )
155148 val state = existing.copy(validated = validated)
156149 networks[network] = state
157- connectivityChangedLocked()
158- }
159-
160- maybeNew?.dispatch()
150+ updateConnectionState()
151+ }?.notifyChange()
161152 }
162153
163154 override fun onLost (network : Network ) {
164155 Log .d(TAG , " NetworkCallback onLost($network )" )
165- val maybeNew = synchronized(this ) {
156+ synchronized(this ) {
166157 networks.remove(network)
167- connectivityChangedLocked()
168- }
158+ updateConnectionState()
159+ }?.notifyChange()
160+ }
169161
170- maybeNew?.dispatch()
162+ private fun NetworkState.notifyChange () {
163+ onNetworkChange(this )
171164 }
172165 }
173166
0 commit comments