当前位置: 移动技术网 > IT编程>移动开发>Android > Android中利用NetworkInfo判断网络状态时出现空指针(NullPointerException)问题的解决方法

Android中利用NetworkInfo判断网络状态时出现空指针(NullPointerException)问题的解决方法

2019年07月24日  | 移动技术网IT编程  | 我要评论

冷皇的废后免费阅读,依兰交友,wwwzzz13com

在android中,很多人会用如下的方法判断当前网络是否可用:

/** 
* 获取当前网络状态(是否可用) 
*/ 
public static boolean isnetworkavailable() { 
boolean isaalable = false; 
connectivitymanager connmanager = (connectivitymanager) baseapplication.getapplication().getsystemservice(context.connectivity_service); 
if (connmanager != null && connmanager.getactivenetworkinfo() != null) { 
isaalable = connmanager.getactivenetworkinfo().isavailable(); 
} 
return isaalable; 
}

但是,如果有异常记录的话,有可能看到如下的异常信息:

很多人不理解,明明已经判断是否为空了,为什么还是会出现空指针异常?这种异常往往出现在网络状态极不稳定的时候,下面先看正确的写法:

/** 
* 获取当前网络状态(是否可用) 
*/ 
public static boolean isnetworkavailable() { 
connectivitymanager connmanager = (connectivitymanager) baseapplication.getapplication().getsystemservice(context.connectivity_service); 
if (connmanager != null) { 
/** 
* 获取网络信息实体 
* 由于从系统服务中获取数据属于进程间通信,基本类型外的数据必须实现parcelable接口, 
* networkinfo实现了parcelable,获取到的activenetinfo相当于服务中网络信息实体对象的一个副本(拷贝), 
* 所以,不管系统网络服务中的实体对象是否置为了null,此处获得的activenetinfo均不会发生变化 
*/ 
networkinfo activenetinfo = connmanager.getactivenetworkinfo(); 
if (activenetinfo != null) { 
return activenetinfo.isavailable(); 
} 
} 
return false; 
}

至于为什么改成这样写就可以了,代码注释中已经说的很明白了,还不太理解的可以去看看进程间通信(ipc)和pacelable的知识。

以上所述是小编给大家介绍的android中利用networkinfo判断网络状态时出现空指针(nullpointerexception)问题的解决方法,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网