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.