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 に答える