gpt4 book ai didi

android - ConnectivityManager.CONNECTIVITY_ACTION 已弃用

转载 作者:IT老高 更新时间:2023-10-28 13:12:06 31 4
gpt4 key购买 nike

在Android N中,官网上提到“针对Android N的应用程序不接收CONNECTIVITY_ACTION广播”。并且还提到可以使用 JobScheduler 作为替代方案。但是 JobScheduler 并没有提供与 CONNECTIVITY_ACTION 广播完全相同的行为。

在我的 Android 应用程序中,我使用此广播来了解设备的网络状态。我想知道这个状态是 CONNECTING 还是 CONNECTEDCONNECTIVITY_ACTION 广播的帮助下,它最适合我的要求。

现在它已被弃用,任何人都可以建议我获取当前网络状态的替代方法吗?

最佳答案

将弃用后台应用程序接收网络连接状态更改的能力。

作为 David Wasser表示如果应用程序组件已实例化(未销毁)并且您拥有 registered your receiver programmatically,您仍然可以获得连接更改通知使用它的上下文,而不是在 list 中进行。

或者您可以使用 NetworkCallback反而。特别是,您需要覆盖 onAvailable用于连接状态更改。

让我快速草拟一个 fragment :

public class ConnectionStateMonitor extends NetworkCallback {

final NetworkRequest networkRequest;

public ConnectionStateMonitor() {
networkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.build();
}

public void enable(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
connectivityManager.registerNetworkCallback(networkRequest, this);
}

// Likewise, you can have a disable method that simply calls ConnectivityManager.unregisterNetworkCallback(NetworkCallback) too.

@Override
public void onAvailable(Network network) {
// Do what you need to do here
}
}

关于android - ConnectivityManager.CONNECTIVITY_ACTION 已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36421930/

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