ProgressBar не сбрасывается в «0» при повторном открытии

В приложении для Android я запускаю задачу в отдельном потоке. Во время работы потока он обновляет индикатор прогресса в главном окне, чтобы пользователь знал, что происходит. Проблема в том, что если пользователь запускает поток во второй раз, индикатор выполнения не будет сброшен. Он просто будет сидеть на 100%, ничего не делая.

Весь источникдоступно на github, В качестве примера возьмемBackupThread а такжеJsonBackup (основной класс). Обратите внимание, что «RestoreThread» показывает то же поведение, но я предполагаю, что в обоих случаях проблема идентична.

На быстрой прогулке по:

Околострока 300 в JsonBackup.javaОткрываю новый ProgressDialog. Поскольку это новый экземпляр, я предполагаю, что все инициализировано правильно. На моей текущей рабочей копии я добавил строку, устанавливающую прогресс в «0», но это ничего не изменило. В этом же блоке я создаю резервный поток и запускаю его.

Следующий интересный код - это момент, когда поток сообщает о своем прогрессе основному приложению. Это происходит вокругстрока 185 из BackupThread.java.

Сообщение обрабатывается встрока 80 из JsonBackup.java который обновит индикатор выполнения.

Пока что для прохождения кода. Одна вещь, которая поразила меня, когда я писал этолиния 87 JsonBackup.java, Я думаю, что было бы лучше, если бы поток отправил другое сообщение, явно указав, что это сделано. Но я предполагаю, что это не настоящая проблема здесь. Я говорю это потому, что диалог прогресса правильно закрывается, когда он достигает 100%.

Так что, если все это запустить один раз, все работает как положено. Теперь предположим, что пользователь покидает приложение, но ОС решает оставить его загруженным в память. Позже пользователь возвращается и хочет создать новую резервную копию. Тогда приложение не будет работать, так как прогресс зависает на 100%. Если вы убьете приложение и оно полностью выгружено, оно снова заработает. Поэтому я предполагаю, что некоторый экземпляр объекта все еще находится в памяти и имеет нечистое состояние при повторном запуске. Но из-за жизни я не могу найти, что происходит. В качестве касательной, я мог бы добавить: кроме учебников Notepad, это мое первое приложение для Android, и бла-бла-бла-бла ...

Что мне здесь не хватает ...?

Ответы на вопрос(1)

Ваш ответ на вопрос