Какие знаешь способы оптимизации RecyclerView

«Какие знаешь способы оптимизации RecyclerView» — вопрос из категории UI и Views, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Использование ViewHolder для переиспользования элементов, уменьшая накладные расходы на inflate.

Фиксация размера RecyclerView с setHasFixedSize(true), если размер не меняется динамически.

Оптимизация DiffUtil вместо notifyDataSetChanged() для точечных обновлений:

val diffCallback = MyDiffCallback(oldList, newList)
val diffResult = DiffUtil.calculateDiff(diffCallback)
diffResult.dispatchUpdatesTo(adapter)

Ленивая загрузка изображений (Glide/Picasso) с отменой запросов в onViewRecycled().

Разделение сложных макетов на простые ViewTypes или использование Merge-тегов в XML.

Предзагрузка элементов с RecyclerView.LayoutManager.setInitialPrefetchItemCount().

Избегание вложенных ViewGroup (ConstraintLayout вместо RelativeLayout/LinearLayout).

Использование RecycledViewPool для нескольких RecyclerView с одинаковыми ViewHolders.