Högre vanliga gärningsmän
I allmänhet utlöses ANR:s på grund av att ditt program gör följande:
- Gör långsamma operationer med I/O på huvudtråden.
- Gör långa beräkningar i huvudtråden.
- Gör ett synkront bindemedelsanrop i huvudtråden och den andra processen tar tid på sig att svara.
- Väntar i huvudtråden på en annan tråd som utför en lång operation.
- Skapar fast i en dödlägesituation. Dödslås kan uppstå i huvudtråden när den väntar på resurser som en annan process inte har frigjort, så den kan inte skaffa de resurser den behöver. Dessa andra processer kan befinna sig i en annan tråd, din process eller i ett bindemedelsanrop.
Diagnosmetoder
Använd strikt läge
Med StrictMode
kan du hitta oavsiktliga I/O-operationer.
Läs mer om
StrictMode
i den officiella dokumentationen.
Aktivera ANR-dialoger i bakgrunden i utvecklaralternativ
Inte alla ANR är synliga för användaren; därför kan programmet ha prestandaproblem utan att användaren inser det. Aktivera ANR-dialoger i bakgrunden i utvecklaralternativ.
Inspektera spårfiler med adb
Spårfiler genereras i en ANR-händelse. Du kan hämta dessa filer med hjälp av Android Debug Bridge (adb) som root genom att använda följande kommandon:
adb rootadb shell ls /data/anradb pull /data/anr/<filename>