1305 Stimmen

Die Aktivität hat das Fenster geleakt, das ursprünglich hinzugefügt wurde.

Was ist dieser Fehler und warum tritt er auf?

05-17 18:24:57.069: ERROR/WindowManager(18850): Activity com.mypkg.myP hat das Fenster com.android.internal.policy.impl.PhoneWindow$DecorView@44c46ff0 ausgelaufen, das ursprünglich hier hinzugefügt wurde
05-17 18:24:57.069: ERROR/WindowManager(18850): android.view.WindowLeaked: Activity ccom.mypkg.myP hat das Fenster com.android.internal.policy.impl.PhoneWindow$DecorView@44c46ff0 ausgelaufen, das ursprünglich hier hinzugefügt wurde
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei android.view.ViewRoot.(ViewRoot.java:231)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei android.view.Window$LocalWindowManager.addView(Window.java:424)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei android.app.Dialog.show(Dialog.java:239)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei com.mypkg.myP$PreparePairingLinkageData.onPreExecute(viewP.java:183)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei android.os.AsyncTask.execute(AsyncTask.java:391)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei com.mypkg.myP.onCreate(viewP.java:94)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2544)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei android.app.ActivityThread.access$2200(ActivityThread.java:126)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei android.os.Handler.dispatchMessage(Handler.java:99)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei android.os.Looper.loop(Looper.java:123)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei android.app.ActivityThread.main(ActivityThread.java:4595)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei java.lang.reflect.Method.invokeNative(Native Method)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei java.lang.reflect.Method.invoke(Method.java:521)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
05-17 18:24:57.069: ERROR/WindowManager(18850):     bei dalvik.system.NativeStart.main(Native Method)

8voto

Shubham Agarwal Punkte 3802

Dies ist nicht die Antwort auf die Frage, aber es ist relevant für das Thema.

Wenn die Aktivität ein Attribut im Manifest definiert hat

 android:noHistory="true"

dann wird nach Ausführung von onPause() der Kontext der Aktivität verloren. Daher könnten alle Ansichten, die diesen Kontext verwenden, diesen Fehler anzeigen.

6voto

tinku Punkte 459

Versuche diesen Code:

public class Sample extends Activity(){
@Override
 public void onCreate(Bundle instance){

}
 @Override
    public void onStop() {
        super.onStop();
      progressdialog.dismiss(); // versuche dies
    }

}

6voto

Nicht nur versuchen, eine Warnung anzuzeigen, sondern es kann auch aufgerufen werden, wenn Sie eine bestimmte Instanz einer Aktivität abschließen und versuchen, eine neue Aktivität/Dienst zu starten oder zu stoppen.

Beispiel:

OldActivity instanz;

    oncreate() {
       instanz=this;
    }
    instanz.finish();
    instanz.startActivity(new Intent(ACTION_MAIN).setClass(instanz, NewActivity.class));

5voto

LeonS Punkte 2654

Hatte das Problem, dass ich eine Aktivität beendet habe, während ein Fortschrittsdialog noch angezeigt wurde.

Verbergen Sie also zuerst den Dialog und beenden Sie dann die Aktivität.

5voto

SANAT Punkte 7703

Dies ist mir passiert, als ich ProgressDialog in AsyncTask benutzt habe. Eigentlich habe ich die Methode hide() in onPostExecute verwendet. Basierend auf der Antwort von @Alex Volovoy muss ich dismiss() mit ProgressDialog verwenden, um ihn in onPostExecute zu entfernen und es funktioniert.

progressDialog.hide(); // Verwenden Sie es nicht, es gibt einen Fehler

progressDialog.dismiss(); // Verwenden Sie es

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X