Junior — Middle
Cum se implementează realizarea cererilor de rețea folosind ViewModel într-o aplicație?
sobes.tech AI
Răspuns de la AI
Pentru a realiza solicitări de rețea într-o aplicație Android folosind ViewModel, se utilizează de obicei arhitectura MVVM și biblioteci precum Retrofit și Coroutines.
Ideea principală:
- ViewModel conține logica de încărcare a datelor și gestionează starea UI.
- Solicitările de rețea sunt efectuate asincron pentru a nu bloca firul principal.
- Rezultatele solicitării sunt transmise către View prin LiveData sau StateFlow.
Exemplu cu Kotlin Coroutines și 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) {
// Tratarea erorilor
}
}
}
}
class MyRepository(private val apiService: ApiService) {
suspend fun getDataFromNetwork(): ResultType {
return apiService.fetchData()
}
}
Aici, viewModelScope va anula automat corutina la distrugerea ViewModel-ului, prevenind scurgerile de memorie. Această abordare asigură o separare clară a responsabilităților și facilitează testarea.