Skip to content

Instantly share code, notes, and snippets.

@Skyyo
Created August 10, 2020 17:43
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Skyyo/82903217e1a961d9c9720cabbef27b31 to your computer and use it in GitHub Desktop.
Save Skyyo/82903217e1a961d9c9720cabbef27b31 to your computer and use it in GitHub Desktop.
Simple network tracker. #network_connection
object InternetConnectionTracker : LiveData<Boolean>() {
private val manager: ConnectivityManager by lazy {
Injector.get().appContext()
.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
}
private val netCallback = object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
postValue(true)
super.onAvailable(network)
}
override fun onLost(network: Network) {
if (manager.allNetworks.isEmpty()) {
postValue(false)
}
super.onLost(network)
}
}
override fun onActive() {
val networkRequest = NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build()
manager.registerNetworkCallback(networkRequest, netCallback)
}
override fun onInactive() {
manager.unregisterNetworkCallback(netCallback)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment