Gemeenschappelijke boosdoeners
Over het algemeen worden ANR’s getriggerd omdat uw applicatie het volgende doet:
- Lange bewerkingen uitvoeren met I/O op de hoofddraad.
- Het uitvoeren van lange berekeningen op de hoofddraad.
- Het uitvoeren van een synchrone binder-aanroep in de hoofddraad en het andere proces neemt tijd om te reageren.
- Wachten in de hoofddraad op een andere thread die een lange bewerking uitvoert.
- Vastlopen in een deadlock-situatie. Deadlocks kunnen zich voordoen in de hoofddraad wanneer deze wacht op bronnen die een ander proces niet heeft vrijgegeven, zodat deze de benodigde bronnen niet kan verkrijgen. Deze andere processen kunnen zich in een andere thread bevinden, in uw proces, of in een binder call.
Diagnosetechnieken
Gebruik strikte modus
Met StrictMode
kunt u onbedoelde I/O operaties vinden.
Lees meer over
StrictMode
in de officiële documentatie.
Inschakelen achtergrond ANR-dialogen in ontwikkelaarsopties
Niet alle ANR’s zijn zichtbaar voor de gebruiker; daarom kan de toepassing te maken hebben met prestatieproblemen zonder dat de gebruiker dit doorheeft. Activeer achtergrond ANR dialogen in ontwikkelaars opties.
Inspecteer trace bestanden met adb
Trace bestanden worden gegenereerd in een ANR event. U kunt deze bestanden ophalen met behulp van Android Debug Bridge (adb) als root door gebruik te maken van de volgende commando’s:
adb rootadb shell ls /data/anradb pull /data/anr/<filename>