gpt4 book ai didi

android - 互联网关闭时无法获得回调,然后应用程序在 NetworkCallback 内启动

转载 作者:行者123 更新时间:2023-12-04 13:39:02 25 4
gpt4 key购买 nike

根据官方文档,由于 getActiveNetworkInfo 现在在 Android 中已被弃用,我正在使用以下实现来获取有关 Internet 连接的回调。

private val connectivityManager: ConnectivityManager by lazy {
getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
}

private val builder: NetworkRequest.Builder by lazy {
NetworkRequest.Builder()
}

private val networkCallback: NetworkCallback by lazy {
object : NetworkCallback() {
override fun onAvailable(network: Network?) {
println("Connection is online")
}

override fun onLost(network: Network?) {
println("Connection is offline")
}
}
}

override fun onResume() {
super.onResume()
connectivityManager.registerNetworkCallback(builder.build(), networkCallback)
}

override fun onPause() {
super.onPause()
connectivityManager.unregisterNetworkCallback(networkCallback)
}

连接在线的时候注册这个回调很好用,但是断网的时候注册回调就不行了。为了测试这样的场景,我关闭了我的应用程序。然后关闭互联网连接,然后打开应用程序。

我们有什么办法知道应用程序正在打开吗?如果有,请帮忙分享一下。谢谢。

最佳答案

根据您的问题,我建议您阅读 Android 文档的这一部分。您正在使用 onPause() 和 onResume(),您应该尝试 onStop()。

但我认为你必须在你的逻辑 connectivityManager.unregisterNetworkCallback(networkCallback) 之后调用 super.onPause()
因为它会在你的方法被调用之前暂停应用程序。

关于android - 互联网关闭时无法获得回调,然后应用程序在 NetworkCallback 内启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59981877/

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