Android-ANR-Fehler finden und beheben
ANR steht für „Application Not Responding“. Android zeigt es, wenn der Hauptthread deiner App zu lange blockiert ist, bei Eingaben typischerweise etwa fünf Sekunden. Nutzer sehen ein Einfrieren und einen Dialog, die Play Console zählt es als Qualitätsproblem.
Finden
Öffne in der Play Console Android Vitals → ANRs und Abstürze. Sieh dir die Cluster, die Android-Versionen und die Stacktraces an. Lokal zeigen dir der Profiler in Android Studio und StrictMode in Debug-Builds Arbeit auf dem Hauptthread.
Den Trace lesen
Der Bericht zeigt, was der Hauptthread gerade tat. Suche den ersten Frame aus deinem eigenen Code. Typische Ursachen:
- Festplatte oder Netzwerk auf dem Hauptthread. Datenbankabfragen, Dateizugriffe, synchrones HTTP.
- Sperrenkonflikte. Der Hauptthread wartet auf eine Sperre, die ein Hintergrundthread hält.
- Schwere Arbeit in
onCreate, einem Broadcast Receiver oder beim Dienststart. Das läuft auf dem Hauptthread, solange du es nicht auslagerst. - Langsamer Start, zum Beispiel wenn viele SDKs auf einmal initialisiert werden.
Beheben
- Blockierende Arbeit in einen Hintergrund-Dispatcher oder
WorkManagerverlagern und die Oberfläche nach der Rückkehr aktualisieren. - SDK-Initialisierung nach dem ersten Zeichnen ausführen, wo es geht.
- Broadcast Receiver kurz halten und die Arbeit übergeben.
- StrictMode in Debug-Builds einschalten, damit neue Verstöße schon in der Entwicklung laut auffallen.
Testen
ANRs zeigen sich oft nur auf langsamen Geräten und bei großen Datenmengen. Teste auf einem alten Einsteigerhandy, mit großer Datenbank und gedrosseltem Netz. Bitte Tester mit günstigen Geräten, die Hauptabläufe durchzugehen. Unser Geräte-Leitfaden erklärt die Auswahl.
Fragen von Entwicklern
Ist ein ANR dasselbe wie ein Absturz? Nein. Die App schließt sich nicht von selbst, der Nutzer sieht ein Einfrieren und beendet sie vielleicht selbst.
Welche ANRs sind am wichtigsten? Die beim Start und im Hauptablauf, und alle, die die Play Console über dem Schwellenwert für schlechtes Verhalten markiert.
Du brauchst Tester für deine App? Öffne eine Testgruppe bei AppReviewX. Kostenlos starten