Size: a a a

Programming Offtop

2020 March 25

VP

Vladimir Petrakovich in Programming Offtop
А, кажется, я начинаю понимать
источник

(

( in Programming Offtop
Vladimir Petrakovich
Ну в смысле, надо же дёрнуть какой-то метод, передав туда исходный список и новый, так?
нет
источник

(

( in Programming Offtop
нужно дёрнуть вот этот метод
public static DiffResult calculateDiff(@NonNull Callback cb)
источник

(

( in Programming Offtop
Callback - это DiffCallback из выше
источник

VP

Vladimir Petrakovich in Programming Offtop
Интересный API, но я тут всё равно не вижу, откуда берётся какой-то левый поток
https://t.me/pofftop/174535
источник

(

( in Programming Offtop
а вот и собсна каллбек полностью
public abstract static class Callback {
       
       public abstract int getOldListSize();

       public abstract int getNewListSize();

       public abstract boolean areItemsTheSame(int oldItemPosition, int newItemPosition);

       public abstract boolean areContentsTheSame(int oldItemPosition, int newItemPosition);

}
источник

(

( in Programming Offtop
thread {
 DiffUtils.calculateDiff(cb)
}.run()
источник

VP

Vladimir Petrakovich in Programming Offtop
(
thread {
 DiffUtils.calculateDiff(cb)
}.run()
Ну в случае с мутабельной коллекцией это вполне осознанный выстрел в ногу, никто не заставлял так делать)
источник

(

( in Programming Offtop
Vladimir Petrakovich
Ну в случае с мутабельной коллекцией это вполне осознанный выстрел в ногу, никто не заставлял так делать)
да, а как насчёт всех библиотек, которые вот это оборачивают и одной кнопкой (а иногда и по умолчанию) позволяют включить асинхронный диффинг?
источник

(

( in Programming Offtop
Не говоря о том, что диффинг очень часто и должен быть асинхронным, потому что считать там довольно много
источник

VP

Vladimir Petrakovich in Programming Offtop
(
да, а как насчёт всех библиотек, которые вот это оборачивают и одной кнопкой (а иногда и по умолчанию) позволяют включить асинхронный диффинг?
Все вопросы к их авторам 🤷‍♂️
Можно было бы это делать явно. Что мне мешает в фоновом потоке модифицировать коллекцию и потом делать дифф?
источник

(

( in Programming Offtop
Vladimir Petrakovich
Все вопросы к их авторам 🤷‍♂️
Можно было бы это делать явно. Что мне мешает в фоновом потоке модифицировать коллекцию и потом делать дифф?
делать явно что?
источник

VP

Vladimir Petrakovich in Programming Offtop
(
делать явно что?
Фоновый дифф. Не запускать это на левом потоке под капотом.
источник

(

( in Programming Offtop
Vladimir Petrakovich
Фоновый дифф. Не запускать это на левом потоке под капотом.
эх, любимые решения проблем XY
источник

VP

Vladimir Petrakovich in Programming Offtop
Ну да, я не в курсе, как там сейчас принято делать UI на андроиде
источник

I

Igor in Programming Offtop
Кстати более соврменно апи это AsyncListDiffer
там ты ничего не контролируешь, а можешь ему только имутабельные списки скармливать
источник

D

Dmitry in Programming Offtop
(
Не говоря о том, что диффинг очень часто и должен быть асинхронным, потому что считать там довольно много
Считать меньше всегда лучше, чем много и в фоне. Батарейке в телефоне и кондиционеру в ЦОДе все равно, какой там поток работает.
источник

D

Dmitry in Programming Offtop
Vladimir Petrakovich
Ну да, я не в курсе, как там сейчас принято делать UI на андроиде
В андроиде перерисовывается только те части виджеты, которые поменялись и зависимые от них, но никто полные деревья не сравнивает, они просто помечаются как грязные.
источник

(

( in Programming Offtop
Dmitry
Считать меньше всегда лучше, чем много и в фоне. Батарейке в телефоне и кондиционеру в ЦОДе все равно, какой там поток работает.
Из-за угла выглянул даггер, ркс, ретрофит и вообще все, что накидывает оверхедов хотя этого можно было избежать, включая сам андроид
источник

(

( in Programming Offtop
Dmitry
В андроиде перерисовывается только те части виджеты, которые поменялись и зависимые от них, но никто полные деревья не сравнивает, они просто помечаются как грязные.
requestLayout передает привет
источник