【发布时间】:2020-12-15 10:11:17
【问题描述】:
我正在尝试使用 conenctivityManager 的方法 registerDefaultNetworkCallback() 来监听网络变化 使用来自answer的以下代码
val connectivityManager = cotnext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
connectivityManager?.let {
it.registerDefaultNetworkCallback(object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
//take action when network connection is gained
}
override fun onLost(network: Network) {
//take action when network connection is lost
}
})
}
但是我对这个方法有几个问题:
- 如果手机连接了wifi但wifi没有连接到互联网怎么办
- 在方法文档中,我读到了我不明白的内容,究竟什么时候会达到限制?如果回调被调用 100 次,那么会抛出异常吗?以及如何处理?
为避免由于应用泄漏回调导致的性能问题,系统会将未完成请求的数量限制为每个应用 100 个(由其 UID 标识),并与此方法的所有变体、requestNetwork 以及 ConnectivityDiagnosticsManager.registerConnectivityDiagnosticsCallback 共享。使用此方法请求网络将计入此限制。如果超过此限制,将引发异常。为避免遇到此问题并节省资源,请确保使用 unregisterNetworkCallback(ConnectivityManager.NetworkCallback) 取消注册回调。
【问题讨论】:
标签: android kotlin android-connectivitymanager