Ответ
Однажды я работал над приложением с кастомной анимацией RecyclerView. В спешке не учел контекст активити, что привело к утечке памяти при быстрой прокрутке. Приложение падало на слабых устройствах.
Решение:
- Использовал WeakReference для хранения контекста
- Оптимизировал onBindViewHolder, вынеся тяжелые операции
- Добавил отмену анимаций при скролле
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
private val weakContext = WeakReference(itemView.context)
//...
}
Вывод: всегда тестируйте на разных устройствах и профилируйте память. Теперь я добавляю LeakCanary в каждый проект.