Sobes.tech
Junior — Middle

Ինչպես իրականացնել ցանցային հարցումների կատարմանը ViewModel-ով ծրագրում?

sobes.tech AI

Պատասխան AI-ից

Android հավելվածում ցանցային հարցումները կատարելու համար սովորաբար օգտագործվում է MVVM ճարտարապետությունը և Retrofit և Coroutines գրադարանները:

Հիմնական գաղափարը՝

  • ViewModel-ը պարունակում է տվյալների բեռնումը և UI-ի վիճակի կառավարումը:
  • Ցանցային հարցումները կատարվում են ասինխրոն, որպեսզի չխոչընդոտեն գլխավոր հոսքը:
  • Հարցման արդյունքները փոխանցվում են View-ին LiveData կամ StateFlow-ի միջոցով:

Օրինակ Kotlin Coroutines և 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) {
                // Հետագա սխալների կառավարում
            }
        }
    }
}

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

Այստեղ viewModelScope ավտոմատ կերպով կասեցնում է coroutine-ը ViewModel-ի ոչնչացման ժամանակ, ինչը կանխում է հիշողության լիքները: Այս մոտեցումը ապահովում է պատասխանատվությունների հստակ բաժանում և հեշտացնում է թեստավորումը։