Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save VitalyPeryatin/cbfa9eddb17c9094863555b35fb41cf2 to your computer and use it in GitHub Desktop.
Save VitalyPeryatin/cbfa9eddb17c9094863555b35fb41cf2 to your computer and use it in GitHub Desktop.
class ConnectionLiveData(context: Context) :
MutableLiveData<ConnectionLiveData.ServerConnectionType>() {
enum class ServerConnectionType { ONLINE, OFFLINE }
private var connectivityManager: ConnectivityManager =
context.getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager
private val connectivityManagerCallback: ConnectivityManager.NetworkCallback =
object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network?) {
postValue(ServerConnectionType.ONLINE)
}
override fun onLost(network: Network?) {
postValue(ServerConnectionType.OFFLINE)
}
}
override fun onActive() {
super.onActive()
updateConnection()
val networkRequest = NetworkRequest.Builder()
.addTransportType(TRANSPORT_CELLULAR)
.addTransportType(TRANSPORT_WIFI)
.build()
connectivityManager.registerNetworkCallback(networkRequest, connectivityManagerCallback)
}
override fun onInactive() {
super.onInactive()
connectivityManager.unregisterNetworkCallback(connectivityManagerCallback)
}
private fun updateConnection() {
val activeNetwork: NetworkInfo? = connectivityManager.activeNetworkInfo
if (activeNetwork?.isConnected == true) {
postValue(ServerConnectionType.ONLINE)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment