Yleiset syylliset
Yleisesti ANR:t laukeavat, koska sovelluksesi tekee seuraavaa:
- Toteuttaa hitaita operaatioita I/O:lla pääsäikeessä.
- Tekee pitkiä laskutoimituksia pääsäikeessä.
- Toteuttaa synkronisen sidontakutsun pääsäikeessä ja toisen prosessin vastaaminen vie aikaa.
- Odottaa pääsäikeessä toista säiettä, joka suorittaa pitkän operaation.
- Juuttuu umpikujaan. Pääsäikeessä voi tapahtua umpikuja, kun se odottaa resursseja, joita toinen prosessi ei ole vapauttanut, joten se ei voi hankkia tarvitsemiaan resursseja. Nämä toiset prosessit voivat olla toisessa säikeessä, omassa prosessissasi tai sidontakutsussa.
Diagnoositekniikat
Käytä strict-tilaa
Mukana StrictMode
voit löytää vahingossa tapahtuneet I/O-operaatiot.
Lue lisää
StrictMode
:sta virallisesta dokumentaatiosta.
Taustan ANR-dialogien ottaminen käyttöön kehittäjävalinnoissa
Käyttäjä ei näe kaikkia ANR:iä, joten sovelluksella voi olla suorituskykyongelmia käyttäjän huomaamatta. Ota taustan ANR-valintaikkunat käyttöön kehittäjäasetuksissa.
Tarkista jäljitystiedostot adb:n avulla
Jäljitystiedostot luodaan ANR-tapahtumassa. Voit hakea nämä tiedostot käyttämällä Android Debug Bridgeä (adb) pääkäyttäjänä seuraavilla komennoilla:
adb rootadb shell ls /data/anradb pull /data/anr/<filename>