Wenn ich versuche, meine AndEngine-Aktivität zu starten, wird folgende Fehlermeldung angezeigt :
ERROR/InputDispatcher(21374): channel '4122e148 my.package.AcGame (server)' ~ Channel is unrecoverably broken and will be disposed!
Die App stürzt nicht ab, aber es gibt einen schwarzen Bildschirm und das Gerät reagiert nicht auf das Drücken der Tasten "Zurück" oder "Startseite".
Weiß jemand, wo das Problem liegt?
Antworten:
Einer der häufigsten Gründe, warum ich diesen Fehler sehe, ist, wenn ich versuche, einen Warndialog oder einen Fortschrittsdialog in einer Aktivität anzuzeigen, die nicht im Vordergrund steht. Zum Beispiel, wenn ein Hintergrundthread, der ein Dialogfeld anzeigt, in einer angehaltenen Aktivität ausgeführt wird.
quelle
Ich denke, dass Sie irgendwo Speicherlecks haben. Tipps zur Vermeidung von Speicherverlusten finden Sie hier . Außerdem können Sie hier mehr über Tools erfahren, mit denen Sie es finden können .
quelle
Haben Sie einen anderen UI-Thread verwendet? Sie sollten nicht mehr als einen UI-Thread verwenden und ihn wie ein Sandwich aussehen lassen. Dies führt zu Speicherlecks.
Ich habe ein ähnliches Problem vor 2 Tagen gelöst ...
Um es kurz zu machen: Der Hauptthread kann viele UI-Threads haben, um mehrere Arbeiten auszuführen. Wenn sich jedoch ein Sub-Thread mit einem UI-Thread darin befindet, hat der UI-Thread seine Arbeit möglicherweise noch nicht beendet, während der übergeordnete Thread seine bereits beendet hat Arbeit, dies führt zu Speicherlecks.
Zum Beispiel ... für Fragment- und UI-Anwendungen ... führt dies zu Speicherlecks.
Meine Lösung ist wie folgt neu zu ordnen:
für Sie Referenz.
Ich bin Taiwaner, ich freue mich, hier noch einmal zu antworten.
quelle
Den Quellcode zu dieser Ausgabe finden Sie hier :
Es ist Ursache durch Zyklus gebrochen gesperrt ...
quelle
Ich habe einen ähnlichen Fehler erhalten (meine App stürzt ab), nachdem ich etwas in umbenannt
strings.xml
und vergessen habe, andere Dateien (eine bevorzugte XML-Ressourcendatei und Java-Code) zu ändern.IDE (Android Studio) zeigte keine Fehler. Aber nachdem ich meine XML-Dateien und meinen Java-Code repariert hatte, lief die App in Ordnung. Vielleicht gibt es einige kleine Fehler in Ihren XML-Dateien oder Konstanten.
quelle
Ich hatte das gleiche Problem. Meins war auf ein drittes Glas zurückzuführen, aber der Logcat hat die Ausnahme nicht erkannt. Ich habe das dritte Glas aktualisiert, hoffe, dass dies helfen wird.
quelle
Ich hatte das gleiche Problem, aber mein Problem war auf ein Speicherleck in der Android-Datenbank zurückzuführen. Ich habe einen Cursor übersprungen. Das Gerät stürzt also ab, um das Speicherleck zu beheben. Wenn Sie mit der Android-Datenbank arbeiten, überprüfen Sie, ob Sie beim Abrufen aus der Datenbank einen Cursor übersprungen haben
quelle
Das ist mir auch passiert, als ich ein Spiel mit and-engine ausgeführt habe. Es wurde behoben, nachdem ich den folgenden Code zu meiner manifest.xml hinzugefügt hatte. Dieser Code sollte zu Ihrer Hauptaktivität hinzugefügt werden.
quelle
Ich hatte das gleiche Problem. So beheben Sie den Fehler: Schließen Sie ihn auf dem Emulator und führen Sie ihn dann mit Android Studio aus.
Der Fehler tritt auf, wenn Sie versuchen, die App erneut auszuführen, wenn die App bereits auf dem Emulator ausgeführt wird.
Grundsätzlich lautet der Fehler "Ich habe den vorhandenen Kanal nicht mehr und entsorge die bereits hergestellte Verbindung", da Sie die App erneut von Android Studio aus ausgeführt haben.
quelle
Ich hatte auch das gleiche Problem. In meinem Fall wurde beim Versuch, Videos mit einer schlechten Codierung zu reproduzieren (zu viel Speicher erforderlich) verursacht. Dies hat mir geholfen, den Fehler zu erkennen und eine andere Version desselben Videos anzufordern. https://stackoverflow.com/a/11986400/2508527
quelle
In meinem Fall treten diese beiden Probleme in einigen Fällen auf, z. B. wenn ich versuche, den Fortschrittsdialog in einer Aktivität anzuzeigen, die nicht im Vordergrund steht. Daher schließe ich den Fortschrittsdialog in onPause des Aktivitätslebenszyklus ab. Und das Problem ist behoben.
Dieser Animator kann nicht in einer getrennten Ansicht gestartet werden! Effekt aufdecken BUG
ANTWORT: Dieser Animator kann nicht in einer getrennten Ansicht gestartet werden! Wirkung offenbaren
Warum ich Fehler bekomme Der Kanal ist unwiederbringlich defekt und wird entsorgt!
ANTWORT: Warum ich den Fehler erhalte 'Kanal ist unwiederbringlich defekt und wird entsorgt!'
quelle
Ich hatte dieses Problem und die Ursache war tatsächlich eine NullPointerException. Aber es wurde mir nicht als eins präsentiert!
Mein Output: Bildschirm blieb sehr lange hängen und ANR
Mein Status: Die Layout-XML-Datei enthielt ein anderes Layout, verwies jedoch auf die enthaltene Ansicht, ohne im angehängten Layout eine ID anzugeben. (Ich hatte zwei weitere ähnliche Implementierungen derselben untergeordneten Ansicht, daher wurde die Ressourcen-ID mit dem angegebenen Namen erstellt.)
Hinweis: Es handelte sich um ein benutzerdefiniertes Dialogfeldlayout. Daher kann es hilfreich sein, zuerst die Dialogfelder zu überprüfen
Schlussfolgerung: Beim Durchsuchen der ID der untergeordneten Ansicht ist ein Speicherverlust aufgetreten.
quelle
Als ich auf diesen Fehler stieß, wurden Ihre Funktionen oder Bibliotheken, die verwendet wurden, irgendwo in Ihrem Code auf verschiedenen Threads ausgeführt. Versuchen Sie also, den gesamten Code auf demselben Thread aufzurufen. Dadurch wurde mein Problem behoben.
Google Referenzlink
quelle
Für mich wurde es durch ein zu großes Begrüßungsbild (über 4000x2000) verursacht. Das Problem verschwand nach dem Reduzieren seiner Abmessungen.
quelle
Wenn man alle Beiträge durchliest, sieht es so aus, als ob viele verschiedene Ursprünge dieselben Problemsymptome verursachen.
In meinem Fall zum Beispiel - ich habe dieses Problem bekommen, sobald ich hinzugefügt habe
zu meinen Fortschrittsbalken-Eigenschaften. Ich denke, der GUI-Designer von ADT ist für mehrere Fehler bekannt. Daher gehe ich davon aus, dass dies einer von ihnen ist. Wenn Sie also nach dem Spielen mit Ihrem GUI-Setup auf ähnliche Problemsymptome stoßen (die einfach keinen Sinn ergeben), versuchen Sie einfach, das, was Sie getan haben, zurückzusetzen und Ihre letzten GUI-Änderungen rückgängig zu machen.
Drücken Sie einfach Strg + Z mit der zuletzt geänderten Datei auf dem Bildschirm.
Oder:
Das Versionskontroll-Tool könnte hilfreich sein. Öffnen Sie die Versionskontrolle - wählen Sie die Registerkarte Lokale Änderungen und sehen Sie sich die zuletzt geänderten (möglicherweise XML-) Dateien an.
Klicken Sie mit der rechten Maustaste auf einen der verdächtigsten und klicken Sie auf Diff anzeigen. Dann raten Sie einfach, welche modifizierte Leitung dafür verantwortlich sein könnte.
Viel Glück :)
quelle
Dieser Fehler trat im Falle eines Speicherverlusts auf. Zum Beispiel, wenn Sie einen statischen Kontext einer Android-Komponente (Aktivität / Dienst / usw.) haben und diese vom System beendet wird.
Beispiel: Musik-Player-Steuerelemente im Benachrichtigungsbereich. Verwenden Sie einen Vordergrunddienst und legen Sie über PendingIntent wie unten beschrieben Aktionen im Benachrichtigungskanal fest.
Und wenn dieser Benachrichtigungskanal abrupt unterbrochen wird (möglicherweise vom System, wie bei Xiomi-Geräten, wenn wir die Hintergrund-Apps bereinigen), wird dieser Fehler aufgrund von Speicherlecks vom System ausgelöst.
quelle
In meinem Fall habe ich die Glide-Bibliothek verwendet und das an sie übergebene Bild war null. Also warf es diesen Fehler. Ich habe einen Scheck wie folgt ausgestellt:
Und es hat gut funktioniert. Hoffe das hilft jemandem.
quelle
Ich habe die gleiche Logcat-Nachricht erhalten, stelle nur fest, dass der Wert von string.xml des Arrays nicht Zahl / Ziffer sein kann, sondern nur Text / Alphabet zulässig ist.
quelle