0

我需要一些方法来检测网络连接何时丢失。所以移动和wifi之间的切换并不重要,它只是在运行时检测连接丢失的时间。

我现在找到了一些适合我的代码。

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

如果您只想在活动在屏幕上时跟踪网络连接状态,您可以将您的ConnectivityReceiveras 内部嵌套类放在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 回答