Junior — Middle
Ilovada ViewModel yordamida tarmoq so'rovlarini qanday amalga oshirish mumkin?
sobes.tech AI
AIdan javob
Android ilovasida tarmoq so'rovlarini amalga oshirish uchun odatda MVVM arxitekturasi va Retrofit va Coroutines kabi kutubxonalar qo'llaniladi.
Asosiy g'oya:
- ViewModel ma'lumotlarni yuklash mantiqini o'z ichiga oladi va UI holatini boshqaradi.
- Tarmoq so'rovlari asinxron tarzda amalga oshiriladi, shunda asosiy oqim bloklanmaydi.
- So'rov natijalari LiveData yoki StateFlow orqali View ga uzatiladi.
Kotlin Coroutines va Retrofit bilan misol:
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) {
// Xatoliklarni boshqarish
}
}
}
}
class MyRepository(private val apiService: ApiService) {
suspend fun getDataFromNetwork(): ResultType {
return apiService.fetchData()
}
}
Bu yerda viewModelScope ViewModel yo'q qilinganda avtomatik ravishda korutina bekor qilinadi, bu esa xotira oqib ketishini oldini oladi. Bu yondashuv mas'uliyatlarni aniq ajratishni ta'minlaydi va testlarni osonlashtiradi.