Назад к вопросам
Junior — Middle
69
Расскажите о вашем опыте создания многокомпонентных приложений, включающих сетевое взаимодействие.
Ответ от нейросети
sobes.tech AI
В моём опыте создания многокомпонентных Android-приложений с сетевым взаимодействием я использовал архитектуру MVVM или Clean Architecture для разделения ответственности между компонентами. Например, UI-компоненты (Activity/Fragment) взаимодействуют с ViewModel, которая обращается к репозиториям для получения данных.
Для сетевого взаимодействия применял Retrofit или OkHttp для выполнения HTTP-запросов, а также использовал корутины или RxJava для асинхронной обработки данных. Кэширование и обработка ошибок реализовывались на уровне репозитория.
Пример упрощённого кода с Retrofit и корутинами:
interface ApiService {
@GET("users/{id}")
suspend fun getUser(@Path("id") id: String): User
}
class UserRepository(private val api: ApiService) {
suspend fun fetchUser(id: String): User {
return api.getUser(id)
}
}
class UserViewModel(private val repository: UserRepository) : ViewModel() {
val userLiveData = MutableLiveData<User>()
fun loadUser(id: String) {
viewModelScope.launch {
try {
val user = repository.fetchUser(id)
userLiveData.value = user
} catch (e: Exception) {
// обработка ошибки
}
}
}
}