← ClaudeAtlas

android-network-monitoringlisted

Network connectivity monitoring for Android - ConnectivityManager with NetworkCallback, wrapping network state in a Flow, offline banner UI, network-aware retry, WiFi vs cellular detection, and fake NetworkMonitor for tests. Use this skill whenever detecting connectivity loss, showing an offline indicator, triggering re-fetch when connectivity returns, or gating downloads to WiFi. Trigger on phrases like "network monitor", "offline detection", "ConnectivityManager", "NetworkCallback", "connectivity", "offline banner", "no internet", "network state", "detect wifi", "connectivity change".
lenorebreakneck630/claude-zero-to-hero-android-KMP · ★ 1 · DevOps & Infrastructure · score 64
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