首页 > 解决方案 > NetworkCallback 在启动时不起作用(API 版本 22 到 API 版本 26)

问题描述

我有一个 registerNetworkCallback 函数:

private fun registerNetworkCallback() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        connectivityManager?.registerDefaultNetworkCallback(networkCallback)
    } else {
        connectivityManager?.registerNetworkCallback(builder.build(), networkCallback)
    }
}

还有一个 networkCallback

val networkCallback = object : ConnectivityManager.NetworkCallback() {
    override fun onAvailable(network: Network) {
        super.onAvailable(network)
        // do something
    }

    override fun onLost(network: Network) {
        super.onLost(network)
        // do something
    }
}

在 API 版本 27 和更高版本上,这个东西工作得很好。当我打开应用程序时,它会检查网络是否可用,然后我可以在 onAvailable 或 onLost 函数中执行某些操作。但是在 API 22 上,这在启动时不起作用,但如果我之后更改网络状态,它就会起作用。我想知道为什么它在开始时也不发出事件?有什么建议么。

标签: androidkotlinandroid-connectivitymanager

解决方案


推荐阅读