Error: BinderProxy @ 45d459c0 no es válido; ¿Está funcionando su actividad?

¿Qué es este error … no he encontrado ninguna discusión sobre este error en la comunidad stackoverflow Detallada: –

10-18 23:53:11.613: ERROR/AndroidRuntime(3197): Uncaught handler: thread main exiting due to uncaught exception 10-18 23:53:11.658: ERROR/AndroidRuntime(3197): android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@45d459c0 is not valid; is your activity running? 10-18 23:53:11.658: ERROR/AndroidRuntime(3197): at android.view.ViewRoot.setView(ViewRoot.java:468) 10-18 23:53:11.658: ERROR/AndroidRuntime(3197): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177) 10-18 23:53:11.658: ERROR/AndroidRuntime(3197): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 10-18 23:53:11.658: ERROR/AndroidRuntime(3197): at android.view.Window$LocalWindowManager.addView(Window.java:424) 10-18 23:53:11.658: ERROR/AndroidRuntime(3197): at android.app.Dialog.show(Dialog.java:239) 10-18 23:53:11.658: ERROR/AndroidRuntime(3197): at com.vishal.contacte.Locationlistener$MyLocationListener.onLocationChanged(Locationlistener.java:86) 10-18 23:53:11.658: ERROR/AndroidRuntime(3197): at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:179) 10-18 23:53:11.658: ERROR/AndroidRuntime(3197): at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:112) 10-18 23:53:11.658: ERROR/AndroidRuntime(3197): at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:128) 10-18 23:53:11.658: ERROR/AndroidRuntime(3197): at android.os.Handler.dispatchMessage(Handler.java:99) 10-18 23:53:11.658: ERROR/AndroidRuntime(3197): at android.os.Looper.loop(Looper.java:123) 10-18 23:53:11.658: ERROR/AndroidRuntime(3197): at android.app.ActivityThread.main(ActivityThread.java:4363) 10-18 23:53:11.658: ERROR/AndroidRuntime(3197): at java.lang.reflect.Method.invokeNative(Native Method) 10-18 23:53:11.658: ERROR/AndroidRuntime(3197): at java.lang.reflect.Method.invoke(Method.java:521) 10-18 23:53:11.658: ERROR/AndroidRuntime(3197): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862) 10-18 23:53:11.658: ERROR/AndroidRuntime(3197): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) 10-18 23:53:11.658: ERROR/AndroidRuntime(3197): at dalvik.system.NativeStart.main(Native Method) 

5 Solutions collect form web for “Error: BinderProxy @ 45d459c0 no es válido; ¿Está funcionando su actividad?”

Esto es más probable suceder porque usted está intentando mostrar un diálogo después de la ejecución de un hilo de fondo, mientras que la actividad está siendo destruida.

Estaba viendo este error informado de vez en cuando de algunas de mis aplicaciones cuando la actividad que llamaba al diálogo estaba terminando por alguna razón u otra cuando intentó mostrar un diálogo. Esto es lo que lo solucionó para mí:

 if(!((Activity) context).isFinishing()) { //show dialog } 

He estado utilizando esto para resolver el problema en las versiones anteriores de Android desde hace varios años, y no he visto el accidente desde entonces.

Revise este enlace:
Android – Visualización de diálogos de los hilos de fondo http://dimitar.me/android-displaying-dialogs-from-background-threads/

Me enfrenté al mismo problema y utilizó el código propuesto por DiscDev anterior con cambios menores como sigue:

 if (!MainActivity.this.isFinishing()){ alertDialog.show(); } 

Encontré este error cuando tenía un countDownTimer en mi aplicación. Tenía un método llamando a GameOver en mi aplicación como

 public void onFinish() { GameOver(); } 

Pero en realidad el juego podría haber terminado antes de que el tiempo fuera debido a un clic incorrecto del usuario (era un juego que hacía clic). Así que cuando estuve mirando el diálogo Game Over después de, por ejemplo, 20 segundos, me olvidé de cancelar el countDownTimer así que una vez que se countDownTimer el tiempo, el diálogo volvió a aparecer. O se estrelló con el error anterior por alguna razón.

La solución a esto es bastante simple. Sólo prueba si la Actividad está pasando por su fase de acabado antes de mostrar el Diálogo:

  private Handler myHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case DISPLAY_DLG: if (!isFinishing()) { showDialog(MY_DIALOG); } break; } } }; 

Ver más aquí

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