Sobes.tech
Junior — Middle

Kā īstenot tīkla pieprasījumu izpildi, izmantojot ViewModel lietojumprogrammā?

sobes.tech AI

Atbilde no AI

Lai veiktu tīkla pieprasījumus Android lietotnē, izmantojot ViewModel, parasti tiek izmantota MVVM arhitektūra un bibliotēkas, piemēram, Retrofit un Coroutines.

Galvenā ideja:

  • ViewModel satur datu ielādes loģiku un pārvalda UI stāvokli.
  • Tīkla pieprasījumi tiek veikti asinhroni, lai neapturētu galveno plūsmu.
  • Pieprasījuma rezultāti tiek nodoti uz View, izmantojot LiveData vai StateFlow.

Piemērs ar Kotlin Coroutines un Retrofit:

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) {
                // Kļūdu apstrāde
            }
        }
    }
}

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

Šeit viewModelScope automātiski pārtrauks korutinu, kad ViewModel tiks iznīcināts, novēršot atmiņas noplūdes. Šī pieeja nodrošina skaidru atbildības sadalījumu un atvieglo testēšanu.