После поворота действие (или фрагмент), в котором отображается это диалоговое окно, отбрасывается и создается новое.
Вы заново создаете диалоговое окно в новом действии, но созданный вами поток обновляет диалоговое окно в старом (тот факт, что этот поток имеет ссылку на старое диалоговое окно, также является утечкой памяти).
Я бы посоветовал вам сделать следующее:
- Реализуйте некоторый класс ImageProcessor и поместите его экземпляр в объект Application.
- Сделайте класс ImageProcessor видимым и уведомите слушателей о прогрессе.
- Получить ссылку на этот объект в Activity и подписаться на уведомления в onStart () (и отписаться в onStop ()).
- Когда приходят уведомления об обновлении статуса - обновлять индикацию хода выполнения
Используя этот подход, вы будете иметь логику обработки, инкапсулированную в специальный объект, который выдерживает ротацию, и различные компоненты могут вызывать его методы и подписываться на уведомления от него.