Junior — Middle
Bir uygulamada ViewModel kullanarak ağ isteklerinin nasıl gerçekleştirileceğini nasıl uygularsınız?
sobes.tech yapay zeka
AI'dan gelen yanıt
Android uygulamasında ViewModel kullanarak ağ istekleri yapmak için genellikle MVVM mimarisi ve Retrofit ile Coroutines gibi kütüphaneler kullanılır.
Ana fikir:
- ViewModel, veri yükleme mantığını içerir ve UI durumunu yönetir.
- Ağ istekleri, ana akışı engellememek için asenkron olarak gerçekleştirilir.
- İstek sonuçları LiveData veya StateFlow aracılığıyla Görünüme iletilir.
Kotlin Coroutines ve Retrofit kullanımıyla örnek:
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) {
// Hata işleme
}
}
}
}
class MyRepository(private val apiService: ApiService) {
suspend fun getDataFromNetwork(): ResultType {
return apiService.fetchData()
}
}
Burada viewModelScope, ViewModel yok edildiğinde otomatik olarak coroutine'i iptal eder, bu da bellek sızıntılarını önler. Bu yaklaşım, sorumlulukların net bir şekilde ayrılmasını sağlar ve testleri kolaylaştırır.