- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在Android N中,官网上提到“针对Android N的应用程序不接收CONNECTIVITY_ACTION广播”。并且还提到可以使用 JobScheduler
作为替代方案。但是 JobScheduler
并没有提供与 CONNECTIVITY_ACTION
广播完全相同的行为。
在我的 Android 应用程序中,我使用此广播来了解设备的网络状态。我想知道这个状态是 CONNECTING
还是 CONNECTED
在 CONNECTIVITY_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/
大家好,我需要验证我的设备当前是否连接到互联网,所以我编写了这个类,它使用 ConnectivityManager 来检查: public boolean checkInternetConnectio
在此处显示的代码中出现空指针问题。通常,空指针是一种简单易行的修复方法,但在这种情况下,我完全迷失了原因。 空指针在这一行: dataConnectionStatus = connManager.ge
我是 Android 的新手,当我提供以下代码 fragment 时,我的 Android 应用程序崩溃了。 ConnectivityManager manager = (ConnectivityMa
我正在使用 ConnectivityManager.NetworkCallback 在互联网可用或丢失时获取回调。以下是确定我需要收听哪种传输类型的配置。 manager.registerNetwor
我注册了一个广播来获取ConnectivityManager.CONNECTIVITY_ACTION,代码是: registerReceiver(mNetwrokBroadcastReceiver,
我正在询问来自 android 设备的连接类型,但我不知道什么类型是 wimax。 ConnectivityManager conMgr = (ConnectivityManager) context
Intent intent = new Intent().setAction(ConnectivityManager.CONNECTIVITY_ACTION); sendBroadcast(inten
我总是得到一个空指针异常,即使我在这段代码上连接到 wifi 也是如此: ConnectivityManager connectivityManager = (ConnectivityM
在Android N中,官网提到“Apps targeting Android N do not receive CONNECTIVITY_ACTION broadcasts”。并且还提到 JobSc
所以,我有这个方法可以让我知道用户是否有 Activity 的互联网连接。它运作良好。但是,leak canary 已识别出与 connectivityManager 相关的内存泄漏。据我所知,我目前
我有想要读取网络连接状态的简单代码。我已经向 AndroidManifest.xml 添加了权限: 我尝试访问网络状态的代码: ConnectivityManager conmgr = (C
我偶尔会在连接管理器中看到空指针异常。从 Intent 服务中,我通过 isOnWIFI(this) 检查网络状态。异常发生在 cm.getActiveNetworkInfo() 行。这很奇怪,因为我
我们使用 Android ConnectivityManager 来监听我们应用程序内部的互联网连接变化,如下所示。 class MainActivity : AppCompatActivity()
我正在注册接收器以捕获 ConnectivityManager.CONNECTIVITY_ACTION 代码,即我没有在应用程序 list 中注册它。一切正常,但我注意到我在注册接收器后立即自动收到广
我正在创建一个 BroadcastReceiver 来监听 Wi-Fi 连接变化: registerReceiver(new BroadcastReceiver() { @Override
需要知道getActiveNetwork返回什么样的值。我使用的代码是: ConnectivityManager connectivityManager = (ConnectivityMan
在Android N中,官网上提到“针对Android N的应用程序不接收CONNECTIVITY_ACTION广播”。并且还提到可以使用 JobScheduler 作为替代方案。但是 JobSche
我有一个返回设备连接状态的功能,它一直工作正常,除非设备连接到 VPN,当网络不可用时它会给出误报 fun isConnected(): Boolean { var resul
我是 Android 世界的新手(作为用户,也是作为开发人员),并且我的 Android 应用程序在执行 myWebView.loadUrl("https://www.google.com") 时崩溃
有人看过 jsharkey 的 battery life google io presentation ? 如何切换模拟器中 ConnectivityManager.getBackgroundData
我是一名优秀的程序员,十分优秀!