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-ի ոչնչացման ժամանակ, ինչը կանխում է հիշողության լիքները: Այս մոտեցումը ապահովում է պատասխանատվությունների հստակ բաժանում և հեշտացնում է թեստավորումը։