我在
以下是
onCreate
中调用以下函数,当我在该活动上打开和关闭设备的网络连接时,它可以完美地显示消息。然而,如果我在设备的网络关闭状态下打开此活动,则不会显示网络已关闭的消息,而当我在打开活动时有网络连接时,它会显示我已连接到网络的消息。 private fun checkConnection() {
connectivity = CheckConnectivity(application)
connectivity.observe(this, { isConnected ->
if (isConnected) {
Toast.makeText(this,"You are connected to the internet",Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this,"You are NOT connected to the internet",Toast.LENGTH_SHORT).show()
}
})
}
以下是
CheckConnectivity.kt
的内容。 class CheckConnectivity(private val connectivityManager: ConnectivityManager) :
LiveData<Boolean>() {
constructor(application: Application) : this(
application.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
)
private val networkCallback = @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
object: ConnectivityManager.NetworkCallback(){
override fun onAvailable(network: Network) {
super.onAvailable(network)
postValue(true)
}
override fun onLost(network: Network) {
super.onLost(network)
postValue(false)
}
}
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
override fun onActive() {
super.onActive()
val builder=NetworkRequest.Builder()
connectivityManager.registerNetworkCallback(builder.build(),networkCallback)
}
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
override fun onInactive() {
super.onInactive()
connectivityManager.unregisterNetworkCallback(networkCallback)
}
}
CheckConnectivity(application)
。 - Sam Chen