android–ConnectivityManager getActiveNetworkInfo()返回null

android–ConnectivityManager getActiveNetworkInfo()返回null,第1张

概述我有一个功能检查是否有可用的网络连接,我注意到它已经崩溃了一些用户.这是功能:publicstaticbooleanisOnline(){ConnectivityManagerconnectionManager=(ConnectivityManager)RouteForMeApplication.getInstance().getSystemService(Context.CONNECTIV

我有一个功能检查是否有可用的网络连接,我注意到它已经崩溃了一些用户.这是功能:

public static boolean isOnline() {    ConnectivityManager connectionManager = (ConnectivityManager) RouteForMeApplication.getInstance()            .getSystemService(Context.CONNECTIVITY_SERVICE);    if (connectionManager == null) return false;    boolean networkAvailable = connectionManager.getActiveNetworkInfo() != null            && connectionManager.getActiveNetworkInfo().isConnected();    return networkAvailable;}

而我得到的错误:

java.lang.NullPointerException   at com.route4me.routeoptimizer.utils.InternetUtils.isOnline(InternetUtils.java:14)   at com.route4me.routeoptimizer.services.notes.SendNoteServiceDeferred.sendNote(SendNoteServiceDeferred.java:57)   at com.route4me.routeoptimizer.services.notes.SendNoteServiceDeferred.performAction(SendNoteServiceDeferred.java:28)   at com.route4me.routeoptimizer.services.AbstractService.run(AbstractService.java:75)   at java.lang.Thread.run(Thread.java:841)

我不明白的是,为什么它仍然返回null,即使我正在检查getActiveNetworkInfo()是否为null.有任何想法吗?

EDIT1
该错误出现在“&& connectionManager.getActiveNetworkInfo().isConnected();”行上

解决方法:

很容易成为竞争条件.假设如果connectionManager.getActiveNetworkInfo()!= null为真,则在一纳秒后再次为真是不安全的.

像这样改写:

public static boolean isOnline() {    ConnectivityManager connectionManager = (ConnectivityManager) RouteForMeApplication.getInstance()            .getSystemService(Context.CONNECTIVITY_SERVICE);    if (connectionManager == null) {        return false;    }    NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo()    if (networkInfo == null) {        return false;    }    return networkInfo.isConnected();}
总结

以上是内存溢出为你收集整理的android – ConnectivityManager getActiveNetworkInfo()返回null全部内容,希望文章能够帮你解决android – ConnectivityManager getActiveNetworkInfo()返回null所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1110766.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存