Created
August 16, 2019 13:02
-
-
Save VitalyPeryatin/cbfa9eddb17c9094863555b35fb41cf2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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