0

ネットワーク接続がいつ失われたかを検出する方法が必要です。したがって、モバイルと Wi-Fi の間の切り替えは実際には問題ではなく、接続が失われたときに実行時に検出するだけです。

私は今、私にとってうまくいくいくつかのコードを見つけました。

public class ConnectivityReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
      Log.d(ConnectivityReceiver.class.getSimpleName(), "action: "
              + intent.getAction());
  }

}

接続がまだ利用可能かどうかを onReceive() メソッド内で確認したい。

問題は、メッセージが失われた場合にユーザーにメッセージを表示したいということです。では、接続が失われたことをアクティビティに戻す最良の方法は何ですか?

4

2 に答える 2

2

アクティビティが画面に表示されている場合にのみネットワーク接続状態を追跡したい場合は、ConnectivityReceiverネストされた内部クラスを に配置できますActivity。この場合、onResumeメソッドで登録し、 で登録解除する必要がありonPauseます。次のようになります。

public class MyActivity extends Activity {
    private class ConnectivityReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d(ConnectivityReceiver.class.getSimpleName(), "action: "
                + intent.getAction());
        }
    }

    private final BroadcastReceiver receiver = new ConnectivityReceiver();

    @Override
    protected void onPause() {
        super.onPause();
        unregisterReceiver(receiver);
    }

    @Override
    protected void onResume() {
        super.onResume();
        IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
        registerReceiver(receiver, filter);
    }
}
于 2012-10-10T09:02:23.473 に答える
1

拡張する内部クラスを持つことができBroadcastReceiver、それを動的に登録できます。インタークラス(正確にはonRecieve()メソッド)からアクティビティにアクセスできます。

于 2012-10-10T09:01:01.050 に答える