Cuvântătoare comune
În general, ANR-urile sunt declanșate deoarece aplicația dvs. face următoarele:
- Realizează operațiuni lente cu I/O pe firul principal.
- Realizează calcule lungi pe firul principal.
- Realizează un apel de binder sincron în firul principal și celuilalt proces îi ia timp să răspundă.
- Așteaptă în firul principal un alt fir care efectuează o operație lungă.
- Se blochează într-o situație de impas. Blocajele pot apărea în firul principal atunci când acesta așteaptă resurse pe care un alt proces nu le-a eliberat, astfel încât nu poate dobândi resursele de care are nevoie. Aceste alte procese pot fi într-un alt fir de execuție, în procesul dvs. sau într-un apel binder.
Tehnici de diagnosticare
Utilizați modul strict
Cu StrictMode
puteți găsi operații I/O accidentale.
Citește mai multe despre
StrictMode
în documentația oficială.
Activați dialogurile ANR din fundal în opțiunile dezvoltatorului
Nu toate ANR-urile sunt vizibile pentru utilizator; prin urmare, este posibil ca aplicația să se confrunte cu probleme de performanță fără ca utilizatorul să-și dea seama. Activați dialogurile ANR din fundal în opțiunile dezvoltatorului.
Inspectați fișierele de urmărire utilizând adb
Filele de urmărire sunt generate într-un eveniment ANR. Puteți extrage aceste fișiere utilizând Android Debug Bridge (adb) ca root, folosind următoarele comenzi:
adb rootadb shell ls /data/anradb pull /data/anr/<filename>
.