/* May be called at any time before onDestroy() */
  @Override
  public void onSaveInstanceState(Bundle outState) {

    Bundle[] dialogOptions = new Bundle[mManagedDialogs.size()];
    int x = 0;
    for (ManagedDialog d : mManagedDialogs.values()) {
      d.mShowing = d.mDialog.isShowing();
      dialogOptions[x++] = d.mOptions;
      d.mOptions.putInt(KEY_DIALOG_ID, d.mId);
    }
    outState.putSerializable(KEY_MANAGED_DIALOGS, mManagedDialogs);
    outState.putParcelableArray(KEY_MANAGED_DIALOG_OPTIONS, dialogOptions);

    if (mCustomInterfaceConfiguration != null) {
      mCustomInterfaceConfiguration.onSaveInstanceState(outState);
    }

    super.onSaveInstanceState(outState);
  }