Sobes.tech
Junior — Middle

Kas peamine voog saab teha võrgupäringuid ilma blokeerimise või jõudluse probleemideta?

sobes.tech AI

Vastus AI-lt

Androidis ei tohi peamine (UI) nihe teha otse võrgupäringuid, kuna see põhjustab liidese lukustamise ja rakenduse jõudluse halvenemise. Võrgutegevused võivad võtta märkimisväärset aega ning kui need toimuvad peamisel nihel, lõpetab rakendus kasutaja tegevustele reageerimise.

Blokeeringute vältimiseks kasutatakse:

  • Asünkroonseid ülesandeid (AsyncTask, kuigi nüüd on see vananenud)
  • Nihet (Thread, HandlerThread)
  • Raamatukogusid, mis toetavad asünkroonsust (näiteks Retrofit koos Coroutines)
  • Kotlin Coroutines või RxJava

Näide Kotlin Coroutines'iga:

GlobalScope.launch(Dispatchers.Main) {
    val result = withContext(Dispatchers.IO) {
        // Võrgu päring taustal
        fetchDataFromNetwork()
    }
    // UI uuendamine tulemusega
    updateUI(result)
}

Sel viisil ei blokeeru peamine nihe ning rakendus jääb reageerivaks.