我有一些像这样的代码:
public class NetworkHelper {
private static NetworkInfo mNetworkInfo;
public NetworkHelper(Context context) {
mNetworkInfo = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
}
private boolean isConnectedWifi(){
return (mNetworkInfo != null && mNetworkInfo.isConnected() && mNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI);
}
}
问题是,当设备的连接类型发生变化时,例如,从WiFi网络切换到移动设备,静态参考mNetworkInfo仍然可以工作吗?我应该再次运行getActiveNetworkInfo()以获得“有效”值吗?
答案 0 :(得分:0)
这里的问题是getActiveNetworkInfo
是否每次调用都返回一个 new NetworkInfo
对象,或者它只保留一个对象,每次调用时都返回它的引用。如果每次都返回相同的对象,则代码可以正常工作。
但是,我认为每次调用都可能返回一个新对象,因此您应该保留对ConnectivityManager
对象的引用,并每次再次调用getActiveNetworkInfo
。它不会对性能产生巨大影响,最好是安全起见。