Compruebe si el diálogo puede descartarse con seguridad

En mi aplicación, estoy mostrando un diálogo durante un proceso de fondo de larga duración que es modal.
Este diálogo se descarta cuando android vuelve de la tarea de fondo.

final ProgressDialog progressDialog = ProgressDialog.show(activity, "", "Doing something long running", true, true); new Thread(new Runnable() { public void run() { someLongRunningCode(); // (not using AsyncTask!) activity.runOnUiThread(new Runnable() { public void run() { progressDialog.dismiss(); } }); } }).start(); 

Ahora, sin embargo, cuando el usuario gira su dispositivo mientras el proceso de fondo sigue funcionando, la actividad se vuelve a crear y, por lo tanto, el progreso se desactiva de la actividad.
Cuando se lleva a cabo el proceso de larga ejecución, android obviamente intenta ocultar el diálogo de progreso (ahora separado), que a continuación, resulta en una excepción: java.lang.IllegalArgumentException: View not attached to window manager .
¿Hay alguna forma de comprobar si es seguro descartar el diálogo?

Edit: O mejor aún, ¿hay alguna manera de adjuntar el diálogo existente a la actividad recién creada?
Un nuevo diálogo clonado estaría bien también.

Sólo coger la excepción e ignorarla. La decisión de Android de reiniciar la actividad en rotación hace que los hilos tengan algunas excepciones raras como éstas. Sin embargo, el resultado final que desea no se muestra ningún cuadro de diálogo. Si sólo detecta la excepción, no se muestra ningún cuadro de diálogo. Así que estás bien.

Si no está usando un diseño separado / dibujables para el paisaje y el retrato, sólo puede sustituir configChange en su manifiesto para que la actividad no destruya la actividad (todavía girará y redimensionará correctamente todo para usted). De esa manera, el mismo diálogo se activará y no deberías obtener la excepción. La otra opción requeriría un montón de trabajo alrededor de OnSaveInstanceState y onRestoreInstanceState, y tendría que tener mucho cuidado con los problemas de tiempo si el hilo realmente termina durante ese tiempo. Toda la actividad recreativa en la idea de rotación no funciona bien con multithreading.

 if (progressDialog != null) { progressDialog.dismiss(); } 
  • Archivo de Java subiendo dolorosamente lento
  • Qt Creator 3.2.1 incluyendo .jar para Android
  • Crear un nuevo color dibujable
  • Visualización de texto (como puntuación) que cambia en cada fotograma
  • Aplicación para Android que muestra diferentes diseños a la vez con hdmi
  • Cómo establecerLayoutParams en elementos añadidos dinámicamente en Widget
  • Cómo mantener a mi clase de ofuscar por proguard
  • Cómo extraer valores del paquete en Android
  • Android 2D juego motor simple o marco
  • Cómo cambiar todas las transiciones de actividad de una vez en la aplicación de Android?
  • Creación de LinearLayout en Java - Los elementos no se muestran
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.