当我连接网络时,如何重新启动当前活动?

时间:2010-11-09 11:28:42

标签: android

我正在开发一个应用程序,我正在使用xml解析来显示来自URl的图像。 当互联网断开连接时,我会弹出警报窗口。

现在我的当前活动会自动重启,当我的设备连接网络时。

1 个答案:

答案 0 :(得分:1)

您需要BroadcastReceiver来收听互联网更改。 如果您只需要在活动中使用此逻辑,则可以执行以下操作:

private BroadcastReceiver mReceiver;
private IntentFilter mFilter;

@Override
protected void onCreate(Bundle savedInstanceState) {

  mFilter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
  mReceiver = new ConnectionChangeReceiver();
}

@Override
protected void onResume() {
  super.onResume();
  registerReceiver(mReceiver, mFilter);
}

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


private class ConnectionChangeReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context arg0, Intent i) {
    ConnectivityManager connectivityManager = (ConnectivityManager) ActivityActionBar.this
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivityManager.getActiveNetworkInfo() == null) {
      onLoseInternet();
    }
}
}

onLoseInternet()方法你应该做点什么来重置一切。 可能性:

到目前为止我找到的最佳方式

onCreate()方法中,我有两个电话:getWidgets()populateWidgets()

getWidgets()负责执行所有findViewById内容,populateWidgets()基本上会使用正确的信息填充它们。

因此,当我需要重置信息时,我只需拨打populateWidgets()

Hacky way

我不知道这是否有效,但您可以尝试:

  • finish();
  • startActivity(new Intent(this, this.class));