NetworkInfo会在网络连接更改时到期吗?

时间:2013-06-29 13:29:44

标签: android

我有一些像这样的代码:

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()以获得“有效”值吗?

1 个答案:

答案 0 :(得分:0)

这里的问题是getActiveNetworkInfo是否每次调用都返回一个 new NetworkInfo对象,或者它只保留一个对象,每次调用时都返回它的引用。如果每次都返回相同的对象,则代码可以正常工作。

但是,我认为每次调用都可能返回一个新对象,因此您应该保留对ConnectivityManager对象的引用,并每次再次调用getActiveNetworkInfo。它不会对性能产生巨大影响,最好是安全起见。