ProgressBar no se restablece a "0" cuando se abre por segunda vez

En una aplicación de Android ejecuto una tarea en un hilo separado. Mientras el hilo se está ejecutando, actualiza una barra de progreso en la ventana principal para que el usuario sepa lo que está sucediendo. El problema es que si un usuario inicia el hilo por segunda vez, la barra de progreso no se restablecerá. Simplemente se sentará al 100% sin hacer nada.

Toda la fuente esdisponible en github. Como ejemplo, tome elBackupThread yJsonBackup (La clase principal). Tenga en cuenta que "RestoreThread" muestra el mismo comportamiento, pero supongo que en ambos casos el problema es idéntico.

En un paseo rápido por:

Alrededorlínea 300 en JsonBackup.java, Abro un nuevo ProgressDialog. Como se trata de una nueva instancia, supongo que todo se inicializa correctamente. En mi copia de trabajo actual, he agregado una línea que establece el progreso en "0", pero eso no cambió nada. En el mismo bloque, creo el hilo de respaldo y lo ejecuto.

El siguiente fragmento de código de interés es el momento en que el hilo comunica su progreso de regreso a la aplicación principal. Esto sucede alrededorlínea 185 de BackupThread.java.

El mensaje se maneja enlínea 80 de JsonBackup.java que actualizará la barra de progreso.

Hasta ahora para el tutorial de código. Una cosa que me llamó la atención mientras escribía esto eslínea 87 de JsonBackup.java. Creo que sería mejor si el hilo enviara un mensaje diferente, indicando explícitamente que está hecho. Pero supongo que este no es el verdadero problema aquí. Digo esto porque el diálogo de progreso se descarta correctamente una vez que alcanza el 100%.

Entonces, si todo esto se ejecuta una vez, todo funciona como se esperaba. Ahora suponga que el usuario abandona la aplicación, pero el sistema operativo decide dejarla cargada en la memoria. Más tarde, el usuario regresa y quiere crear una nueva copia de seguridad. Entonces la aplicación no funcionará ya que el progreso se bloquea al 100%. Si mata la aplicación, por lo que está completamente descargada, volverá a funcionar. Por lo tanto, supongo que alguna instancia de objeto todavía está en la memoria y tiene un estado no limpio cuando se vuelve a ejecutar. Pero por mi vida, no puedo encontrar lo que está pasando. Como tangente, podría agregar: además de los tutoriales del Bloc de notas, esta es mi primera aplicación de Android, y bla di blah blah ...

Que me estoy perdiendo aqui...?