Sobes.tech
Junior — Middle

Kuidas rakendada võrgupäringute täitmist kasutades ViewModel rakenduses?

sobes.tech AI

Vastus AI-lt

Võttes arvesse võrgupäringute teostamist Android rakenduses ViewModeli kasutades, kasutatakse tavaliselt MVVM arhitektuuri ning raamatukogusid nagu Retrofit ja Coroutines.

Põhiteooria:

  • ViewModel sisaldab andmete laadimise loogikat ning haldab kasutajaliidese olekut.
  • Võrgupäringud teostatakse asünkroonselt, et mitte blokeerida peamist voogu.
  • Päringu tulemused edastatakse View-le LiveData või StateFlow kaudu.

Näide Kotlin Coroutines ja Retrofitiga:

class MyViewModel(private val repository: MyRepository) : ViewModel() {
    private val _data = MutableLiveData<ResultType>()
    val data: LiveData<ResultType> = _data

    fun fetchData() {
        viewModelScope.launch {
            try {
                val response = repository.getDataFromNetwork()
                _data.value = response
            } catch (e: Exception) {
                // Vea käsitlemine
            }
        }
    }
}

class MyRepository(private val apiService: ApiService) {
    suspend fun getDataFromNetwork(): ResultType {
        return apiService.fetchData()
    }
}

Siin viewModelScope automaatselt tühistab korutina ViewModeli hävitamisel, mis takistab mälulekkeid. See lähenemine tagab selge vastutuse ja lihtsustab testimist.