gpt4 book ai didi

android - 当我启动应用程序时,NetworkCallback 中的 onLost 不起作用

转载 作者:行者123 更新时间:2023-12-03 08:13:02 27 4
gpt4 key购买 nike

当我在应用程序中关闭互联网时它可以工作,但当我在没有互联网的情况下启动应用程序时它不起作用

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com