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.