create class that will extend live data of boolean type.
so we can set an observer on that and and perform action based on that.
package com.example.service_project.presentation.services
import android.app.Application
import android.content.Context
import android.net.ConnectivityManager
import android.net.Network
import android.net.NetworkRequest
import androidx.lifecycle.LiveData
class CheckConnection(private var cm: ConnectivityManager) : LiveData<Boolean>() {
constructor(application: Application) : this(
application.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
)
private val networkCallback = object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
super.onAvailable(network)
postValue(true)
}
override fun onLost(network: Network) {
super.onLost(network)
postValue(false)
}
}
override fun onActive() {
super.onActive()
val request = NetworkRequest.Builder()
cm.registerNetworkCallback(request.build(), networkCallback)
}
override fun onInactive() {
super.onInactive()
cm.unregisterNetworkCallback(networkCallback)
}
}
set An Observer
checkConnection.observe(requireActivity()) {
if (it) {
// action to perform when connected to network
} else {
// action to perform when not connected to network
}
}