​​Асинхронный DiffUtil

#статьи #разработка



RecyclerView встречается в большинстве Android-приложений. И правильным подходом для его обновления является использование DiffUtil, так как при этом мы не обновляем весь список, а только те части, которые изменились.

Кроме того, DiffUtil позволяет нам создавать анимации RecyclerView, которые когда-то было практически невозможно или очень сложно сделать с помощью ListView.



Но по мере того, как размер вашего набора данных увеличивается или логика сравнения становится сложной, для того, чтобы увеличить производительность приложения и избежать «подтормаживаний», вы должны вычислять разницу в background-потоке.



Для этого можно использовать несколько подходов.

Например, если вы пишите свое приложение на Kotlin, то с этой задачей легко справятся Coroutines. Подробнее о том, как это сделать, можно прочитать тут.



Если же вы пишите приложение на Java, или не хотите использовать Coroutines, то одним из вариантов решения этой задачи будет использование Rx. Подробная инструкция тут.