当我在应用程序中关闭互联网时它可以工作,但当我在没有互联网的情况下启动应用程序时它不起作用
private val networkCallback: ConnectivityManager.NetworkCallback =
object: ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
super.onAvailable(network)
//setButtonEnabled(true)
}
override fun onLost(network: Network) {
super.onLost(network)
//setButtonEnabled(false)
}
}
最佳答案
我也看到了同样的事情。如果我在没有网络连接的情况下启动应用程序,则不会调用 NetworkCallback.onLost 或 NetworkCallback.onUnavailable 。然而,如果我通过网络连接启动应用程序,则会调用 NetworkCallback.onAvailable
。
老实说,对我来说这似乎是一个 ConnectivityManager 错误。我添加了一个解决方法,在设置回调时检查 activeNetwork 是否为空,如果是,我只需运行回调告诉我网络不可用时通常会执行的逻辑。这似乎适合我。
val callback = object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
// Run my onAvailable code
}
override fun onLost(network: Network) {
// Run my onLost code
}
override fun onUnavailable() {
// Run my onUnavailable code
}
}
connectivityManager.registerDefaultNetworkCallback(callback)
// !!! Added this !!!
// There appears to be an issue where neither NetworkCallback.onLost or NetworkCallback.onUnavailable
// are called if the app is started without a network connection; because of this we cannot
// rely on the callback correctly initializing if offline. Work around here
// by checking activeNetwork immediately.
if (connectivityManager.activeNetwork == null) {
// Run my onUnavailable code
}
关于android - 当我启动应用程序时,NetworkCallback 中的 onLost 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70324348/