0

我有一些这样的代码:

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

4

1 回答 1

0

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

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

于 2013-06-29T16:20:37.687 回答