Sobes.tech
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, αποτρέποντας διαρροές μνήμης. Αυτή η προσέγγιση διασφαλίζει σαφή διαχωρισμό ευθυνών και διευκολύνει τις δοκιμές.