Sobes.tech
Junior — Middle

Môžete vysvetliť, čo znamená pojem ANR v kontexte mobilných aplikácií a ako s ním bojovať?

sobes.tech AI

Odpoveď od AI

ANR (Application Not Responding) je situácia v Android aplikácii, keď používateľské rozhranie prestane reagovať na akcie používateľa dlhšie ako 5 sekúnd. K tomu dochádza, ak je hlavný vlákno (UI thread) zaneprázdnené dlhodobou operáciou a nemôže spracovávať udalosti.

Na boj s ANR:

  • Presuňte ťažké operácie (sieť, databáza, výpočty) do pozadia (napríklad pomocou AsyncTask, Coroutines, Thread).
  • Používajte optimalizované algoritmy a minimalizujte čas práce v UI vlákne.
  • Sledujte logy a používajte profilovacie nástroje na identifikáciu úzkych miest.

Príklad použitia Kotlin Coroutines pre prácu na pozadí:

GlobalScope.launch(Dispatchers.IO) {
    val data = loadDataFromNetwork()
    withContext(Dispatchers.Main) {
        updateUI(data)
    }
}