Cuadro de diálogo de progreso dando excepción en asynchtask

Estoy desarrollando una aplicación android en la que im usando una tarea asincrónica en un post ejecutar el método cuando im cierre cuadro de diálogo de progreso de una excepción está llegando y la aplicación se está cerrando con fuerza.

Excepción viene es:

04-24 09:41:54.661: E/AndroidRuntime(1727): java.lang.IllegalArgumentException: View not attached to window manager 04-24 09:41:54.661: E/AndroidRuntime(1727): at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:355) 

El código:

 data_insertion = new AsyncTask<Void, Void, Void>() { @Override protected void onPreExecute() { // TODO Auto-generated method stub CommonUtility.show_PDialog(MainActivity.this); super.onPreExecute(); } @Override protected void onPostExecute(Void result) { // TODO Auto-generated method stub //setting alaram for refresh api CommonUtility.close_PDialog(); //*getting exception on this line* Intent setalaram = new Intent(MainActivity.this, SetAlaram.class); startService(setalaram); Intent i = new Intent(MainActivity.this, PlayListActivity.class); startActivity(i); MainActivity.this.finish(); super.onPostExecute(result); finish(); } @Override protected Void doInBackground(Void...params) { // TODO Auto-generated method stub //some code } return null; } }.execute(null, null, null); //and here is my close method for dilogue public static void close_PDialog() { if (dialog != null && dialog.isShowing()) { dialog.dismiss(); } } 

Salida de registro:

 04-24 09:41:54.661: E/AndroidRuntime(1727): FATAL EXCEPTION: main 04-24 09:41:54.661: E/AndroidRuntime(1727): java.lang.IllegalArgumentException: View not attached to window manager 04-24 09:41:54.661: E/AndroidRuntime(1727): at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:355) 04-24 09:41:54.661: E/AndroidRuntime(1727): at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:200) 04-24 09:41:54.661: E/AndroidRuntime(1727): at android.view.Window$LocalWindowManager.removeView(Window.java:432) 04-24 09:41:54.661: E/AndroidRuntime(1727): at android.app.Dialog.dismissDialog(Dialog.java:278) 04-24 09:41:54.661: E/AndroidRuntime(1727): at android.app.Dialog.access$000(Dialog.java:71) 04-24 09:41:54.661: E/AndroidRuntime(1727): at android.app.Dialog$1.run(Dialog.java:111) 04-24 09:41:54.661: E/AndroidRuntime(1727): at android.app.Dialog.dismiss(Dialog.java:268) 04-24 09:41:54.661: E/AndroidRuntime(1727): at commonUtilities.CommonUtility.close_PDialog(CommonUtility.java:233) 04-24 09:41:54.661: E/AndroidRuntime(1727): at com.walkover.filesharing.MainActivity$1.onPostExecute(MainActivity.java:55) 04-24 09:41:54.661: E/AndroidRuntime(1727): at com.walkover.filesharing.MainActivity$1.onPostExecute(MainActivity.java:1) 04-24 09:41:54.661: E/AndroidRuntime(1727): at android.os.AsyncTask.finish(AsyncTask.java:417) 04-24 09:41:54.661: E/AndroidRuntime(1727): at android.os.AsyncTask.access$300(AsyncTask.java:127) 04-24 09:41:54.661: E/AndroidRuntime(1727): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429) 04-24 09:41:54.661: E/AndroidRuntime(1727): at android.os.Handler.dispatchMessage(Handler.java:99) 04-24 09:41:54.661: E/AndroidRuntime(1727): at android.os.Looper.loop(Looper.java:130) 04-24 09:41:54.661: E/AndroidRuntime(1727): at android.app.ActivityThread.main(ActivityThread.java:3683) 04-24 09:41:54.661: E/AndroidRuntime(1727): at java.lang.reflect.Method.invokeNative(Native Method) 04-24 09:41:54.661: E/AndroidRuntime(1727): at java.lang.reflect.Method.invoke(Method.java:507) 04-24 09:41:54.661: E/AndroidRuntime(1727): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 04-24 09:41:54.661: E/AndroidRuntime(1727): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 04-24 09:41:54.661: E/AndroidRuntime(1727): at dalvik.system.NativeStart.main(Native Method) 

Posiblemente cuando la tarea termina y se ejecuta en su onPostExecute, la Actividad en la que se creó (y se obtuvo el contexto de) ya estaba destruida cuando llegó al onPostExecute.

Puedes dejarlo de esta manera, o hacer una instancia de ProgressDialog en algún lugar que se pueda usar cada vez que necesites un diálogo, y en el método onDestroy () de tu actividad podrías cancelarlo (en caso de que algo así suceda).

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.