Junior — Middle
Πώς υλοποιείται η εκτέλεση δικτυακών αιτημάτων χρησιμοποιώντας ViewModel σε μια εφαρμογή;
sobes.tech AI
Απάντηση από AI
Για την εκτέλεση δικτυακών αιτημάτων σε μια εφαρμογή Android με χρήση ViewModel, συνήθως εφαρμόζεται η αρχιτεκτονική 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, αποτρέποντας διαρροές μνήμης. Αυτή η προσέγγιση διασφαλίζει σαφή διαχωρισμό ευθυνών και διευκολύνει τις δοκιμές.