在我的代码中,我需要跟踪internet连接并进行适当的更改.首先,我创建一个网络请求,然后使用ConnectivityManager
注册一个网络回调.
val networkCallback = createNetworkCallback()
val networkRequest = NetworkRequest.Builder()
.addCapability(NET_CAPABILITY_INTERNET)
.addTransportType(TRANSPORT_CELLULAR)
.addTransportType(TRANSPORT_WIFI)
.addTransportType(TRANSPORT_ETHERNET)
.build()
connectivityManager.registerNetworkCallback(networkRequest, networkCallback)
让我们看看networkRequest
.我请求的网络需要NET_CAPABILITY_INTERNET
和一些我在代码中指定的传输类型.
表示,例如,我将打开/关闭WI-FI,仅当我在网络请求中指定了传输类型或相应功能时,才会触发网络回调.现在的问题是,当networkCallback
触发时,我是否需要再次判断功能和传输类型?
override fun onAvailable(network: Network) {
val networkCapabilities = cm.getNetworkCapabilities(network)
val hasInternetCapabilities = networkCapabilities?.let {
return@let it.hasCapability(NET_CAPABILITY_INTERNET) or
it.hasTransport(TRANSPORT_WIFI) or
it.hasTransport(TRANSPORT_CELLULAR) or
it.hasTransport(TRANSPORT_ETHERNET)
} ?: false
}
}
据我所知,如果网络不能满足我的networkRequest
,onAvailable()
内的判断就无关紧要了,因为它不会执行.非常感谢.