Ответ
Были сложности с оптимизацией RecyclerView для списка с тысячами элементов и тяжелыми изображениями. Проблема была в лагах при скролле. Решил через:
- Пагинацию с
Paging3 - Оптимизацию
ViewHolder(минимальная логика вonBind) - Библиотеку
Coilдля асинхронной загрузки и кеширования картинок - Дифф-утилиты для эффективных обновлений
Пример:
val adapter = MyAdapter(diffCallback)
recyclerView.adapter = adapter.withLoadStateFooter(LoadingFooter())
viewModel.pagingData.observe(this) { pagingData ->
adapter.submitData(lifecycle, pagingData)
}
Другая проблема — утечки памяти в ViewModel из-за неправильной работы с LiveData. Исправил через viewModelScope и repeatOnLifecycle.