ProgressDialog creado a partir de onCreateDialog deja de animar en la segunda ejecución

Creo unProgressDialog enonCreateDialog() al igual que:

protected Dialog onCreateDialog(int id) {
  if (id == DIALOG_PROGRESS_ID)
  {
      ProgressDialog dialog = new ProgressDialog(this);
      dialog.setMessage(getResources().getString(R.string.MyLabel));
      dialog.setCancelable(false);
      dialog.setIndeterminate(true);
      return dialog;
  }
}

Android, en su sabiduría (o falta grave) decide almacenar en caché cada diálogo creado a través de onCreateDialog (). Por eso, cualquier llamada posterior ashowDialog(DIALOG_PROGRESS_ID) da como resultado que se use la misma instancia de ProgressDialog pero la animación ha dejado de funcionar.

He intentado restablecer indeterminado enonPrepareDialog(), pero eso no hace nada. Tampoco hay un método obvio para llamar a la instancia de diálogo que restablecerá la animación.

protected void onPrepareDialog(int id, Dialog dialog)
{
  //This doesn't do anything
  if (id == DIALOG_PROGRESS_ID)
     ((ProgressDialog)dialog).setIndeterminate(true);
  super.onPrepareDialog(id, dialog);
}

EDITAR: ¿Pero tal vez hay una manera de obtener el ProgressBar y comenzar a animarlo? Así que intenté lo siguiente después de hacer esta pregunta:

@Override
protected void onPrepareDialog(int id, Dialog dialog)
{
  if (id == DIALOG_PROGRESS_ID)
  {
     ProgressBar p = (ProgressBar) dialog.findViewById(android.R.id.progress);
     if (p.getAnimation() != null)
        p.startAnimation(p.getAnimation());
  }
  super.onPrepareDialog(id, dialog);

}

Pero no funcionóya sea!

Entonces, ¿alguien sabe si hay una manera de reiniciar la animación en un ProgressDialog?Si no es así, ¿hay alguna manera de forzar que cada llamada a showDialog () llame a onCreateDialog ()? (Esta segunda pregunta fue respondida por @TuomasR, pero después de pensarlo, no creo que esta sea una muy buena solución para mi problema)

Respuestas a la pregunta(4)

Su respuesta a la pregunta