Sobes.tech
Junior — Middle

Wie implementiert man die Ausführung von Netzwerkanfragen mit ViewModel in einer Anwendung?

sobes.tech KI

Antwort von AI

Um Requests im Netzwerk in einer Android-Anwendung mit ViewModel durchzuführen, verwendet man typischerweise die MVVM-Architektur und Bibliotheken wie Retrofit und Coroutines.

Hauptidee:

  • Das ViewModel enthält die Logik zum Laden der Daten und verwaltet den Zustand der UI.
  • Netzwerkanfragen werden asynchron durchgeführt, um den Haupt-Thread nicht zu blockieren.
  • Die Ergebnisse der Anfrage werden an die View über LiveData oder StateFlow übertragen.

Beispiel mit Kotlin Coroutines und 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) {
                // Fehlerbehandlung
            }
        }
    }
}

class MyRepository(private val apiService: ApiService) {
    suspend fun getDataFromNetwork(): ResultType {
        return apiService.fetchData()
    }
}

Hier sorgt viewModelScope dafür, dass die Coroutine automatisch abgebrochen wird, wenn das ViewModel zerstört wird, was Speicherlecks verhindert. Dieser Ansatz sorgt für eine klare Verantwortlichkeitsaufteilung und erleichtert das Testen.