android-network-monitoringlisted
Install: claude install-skill lenorebreakneck630/claude-zero-to-hero-android-KMP
# Android Network Monitoring
## Overview
Real-time connectivity monitoring via `ConnectivityManager` and `NetworkCallback`. The key rule: **never poll** — use callbacks only. Wrap the result in a `Flow<Boolean>` behind a domain interface so ViewModels and Workers stay framework-free.
Related skills: `android-coroutines-flow`, `android-data-layer`, `android-workmanager`.
---
## Domain Interface
```kotlin
// domain layer — no Android imports
interface NetworkMonitor {
val isOnline: Flow<Boolean>
}
```
---
## Implementation
```kotlin
// data layer
class AndroidNetworkMonitor(
private val context: Context,
) : NetworkMonitor {
override val isOnline: Flow<Boolean> = callbackFlow {
val connectivityManager =
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val callback = object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
trySend(true)
}
override fun onLost(network: Network) {
trySend(false)
}
override fun onUnavailable() {
trySend(false)
}
}
val request = NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
.build()
connectivityManager.registerNetworkCallback(request, callback)
// Em