Pregunta La actividad ha filtrado la ventana que se agregó originalmente


¿Qué es este error y por qué ocurre?

05-17 18:24:57.069: ERROR/WindowManager(18850): Activity com.mypkg.myP has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44c46ff0 that was originally added here
05-17 18:24:57.069: ERROR/WindowManager(18850): android.view.WindowLeaked: Activity ccom.mypkg.myP has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44c46ff0 that was originally added here
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.view.ViewRoot.<init>(ViewRoot.java:231)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.app.Dialog.show(Dialog.java:239)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at com.mypkg.myP$PreparePairingLinkageData.onPreExecute(viewP.java:183)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.os.AsyncTask.execute(AsyncTask.java:391)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at com.mypkg.myP.onCreate(viewP.java:94)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2544)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.app.ActivityThread.access$2200(ActivityThread.java:126)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.os.Looper.loop(Looper.java:123)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.app.ActivityThread.main(ActivityThread.java:4595)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at java.lang.reflect.Method.invokeNative(Native Method)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at java.lang.reflect.Method.invoke(Method.java:521)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
05-17 18:24:57.069: ERROR/WindowManager(18850):     at dalvik.system.NativeStart.main(Native Method)

933
2018-05-17 15:51


origen


Respuestas:


Está intentando mostrar un cuadro de diálogo después de salir de una actividad.

[EDITAR]

Esta pregunta es una de las principales búsquedas en Google para desarrolladores de Android, por lo tanto, se agregan algunos puntos importantes de los comentarios, que podrían ser más útiles para el futuro investigador sin profundizar en la conversación de comentarios.

respuesta 1 :

Está intentando mostrar un cuadro de diálogo después de salir de una actividad.

Respuesta 2 

Este error puede ser un poco engañoso en algunas circunstancias (aunque   la respuesta todavía es completamente precisa) - es decir, en mi caso una   Excepción no controlada se lanzó en una AsyncTask, lo que provocó   La actividad para apagar, luego un diálogo de progreso abierto causó esto   Excepción ... por lo que la excepción 'real' fue un poco antes en el registro

Respuesta 3 

Call dismiss () en la instancia de Diálogo que creó antes de salir de su   Actividad, p. en onPause () o onDestroy ()


1266
2018-05-17 15:54



La solución es llamar dismiss() sobre el Dialog tu creaste en viewP.java:183 antes de salir del Activity, p.ej. en onPause(). Todas Windows &Dialogs deben cerrarse antes de dejar un Activity.


370
2018-05-17 18:50



Si estás usando AsyncTask, probablemente ese mensaje de registro puede ser engañoso. Si busca en su registro, puede encontrar otro error, probablemente uno en su doInBackground() método de su AsyncTask, eso está haciendo que tu actual Activity explotar, y por lo tanto una vez que el AsyncTask vuelve ... bueno, ya sabes el resto. Algunos otros usuarios ya lo explicaron aquí :-)


100
2017-07-20 18:23



Puede obtener esta excepción simplemente por un error simple / tonto, por (por ejemplo) llamada accidentalmente finish() después de haber mostrado una AlertDialog, si pierde una declaración de interrupción de llamada en una declaración de cambio ...

   @Override
   public void onClick(View v) {
    switch (v.getId()) {
        case R.id.new_button:
            openMyAlertDialog();
            break; <-- If you forget this the finish() method below 
                       will be called while the dialog is showing!
        case R.id.exit_button:
            finish();
            break;
        }
    }

los finish() método cerrará el Activity, pero el AlertDialog sigue mostrándose!

Entonces, cuando miras fijamente el código, buscando problemas de subprocesamiento o codificación compleja, no pierdas de vista el bosque por los árboles. A veces puede ser algo tan simple y tonto como una declaración de interrupción faltante. :)


52
2017-10-08 08:48



Desencadené este error llamando erróneamente hide() en lugar de dismiss() en una AlertDialog.


48
2017-12-07 19:29



Este problema surge cuando intenta mostrar un cuadro de diálogo después de salir de una actividad.

Acabo de resolver este problema simplemente escribiendo el siguiente código:

@Override
public void onDestroy(){
    super.onDestroy();
    if ( progressDialog!=null && progressDialog.isShowing() ){
        progressDialog.cancel();
    }
}

Básicamente, desde qué clase comenzó progressDialog, anule el método Destroy y hágalo de esta manera. Resolvió el problema de "Actividad ha escapado la ventana".


27
2017-08-30 06:55



Recientemente me enfrenté al mismo problema.

El motivo de este problema es que la actividad se cierra antes de descartar el diálogo. Hay varias razones para que lo anterior ocurra. Los mencionados en las publicaciones anteriores también son correctos.

Me metí en una situación, porque en el hilo, estaba llamando a una función que estaba arrojando una excepción. Debido a que la ventana estaba siendo rechazada y, por lo tanto, la excepción.


19
2017-12-08 21:12