Size: a a a

2018 November 21

DG

Dmitriy Gorbunov in RxPM
Поэтому решение должно быть общим, в том что дифф иногда прогоняется лишний раз не вижу ничего страшного
источник

L

Leo in RxPM
А что если попробовать расширить State и bindTo, чтобы они как-нибудь неявно обменивались между собой метаданными о том, валидны ли данные, которые до сих пор во вьюшке или надо бы перерендерить?
источник

DG

Dmitriy Gorbunov in RxPM
А еще один кейс - диалоги будут показываться в фоне если не отсоеденить вьюху, что тоже не приятно когда ты не находишься на данном экране
источник

L

Leo in RxPM
Соглашусь, что и там и там ситуаций неприятных хватает)
источник

AR

Alexey Rybakov in RxPM
Спасибо за ответ, получается большинство кейсов упираются в кривой дизайн фрагментов. Но похоже если знать все эти подводные камни, то нет ничего критического  в биндинге в onViewCreated. Получается для этого нужно только написать что-то вроде bindToUntilOnDestroyView и биндиться в onViewCreated?
источник

DG

Dmitriy Gorbunov in RxPM
Alexey Rybakov
Спасибо за ответ, получается большинство кейсов упираются в кривой дизайн фрагментов. Но похоже если знать все эти подводные камни, то нет ничего критического  в биндинге в onViewCreated. Получается для этого нужно только написать что-то вроде bindToUntilOnDestroyView и биндиться в onViewCreated?
Нет, это не только из-за фрагментов, тосты, снекбары, команды анимации, отображение диалогов - все это будет происходить в фоне и мешать на других экранах
источник

DG

Dmitriy Gorbunov in RxPM
Лучше не усложнять себе и другим жизнь)
источник

AR

Alexey Rybakov in RxPM
Да, видимо нужно в какой-то мере пройти ваш пусть при проектировании библиотеки, что бы учесть все кейсы, оттуда и вопросы😁
источник
2018 November 22

DG

Dmitriy Gorbunov in RxPM
Парни, кто-нибудь использовал MVI ?
источник
2018 November 23

NY

Nikita Yatskivskiy in RxPM
Не, пока не довелось)
Хотите RxMVI замутить?)
источник

DG

Dmitriy Gorbunov in RxPM
Nikita Yatskivskiy
Не, пока не довелось)
Хотите RxMVI замутить?)
Нет, интересно узнать в сравнении RxPM плюсы и монусы
источник

L

Leo in RxPM
Ребят, оцените решение, пожалуйста. Набросал на скорую руку, просто чтобы понять, будет ли работать.

1) Расширил класс State, добавив в него поле
internal val version = AtomicInteger()
которое инкрементирую вместе с cachedValue.set(it)

2) Вытащил делегат во вью и добавил фильтрацию в

infix fun <T> PresentationModel.State<T>.bindTo(consumer: (T) -> Unit) {
       this.observable
           .observeOn(AndroidSchedulers.mainThread())
           .filter { delegate.didStateValueChange(this) }
           .subscribe(consumer)
           .untilUnbind()
   }

3) Где didStateValueChange - это просто сравнение прошлого значения version для конкретного стейта, то есть делегат хранит мапу стейтов

Вопрос: вроде работает, но выглядит слишком просто чтобы быть правдой -> где я накосячил?
источник

DG

Dmitriy Gorbunov in RxPM
Leo
Ребят, оцените решение, пожалуйста. Набросал на скорую руку, просто чтобы понять, будет ли работать.

1) Расширил класс State, добавив в него поле
internal val version = AtomicInteger()
которое инкрементирую вместе с cachedValue.set(it)

2) Вытащил делегат во вью и добавил фильтрацию в

infix fun <T> PresentationModel.State<T>.bindTo(consumer: (T) -> Unit) {
       this.observable
           .observeOn(AndroidSchedulers.mainThread())
           .filter { delegate.didStateValueChange(this) }
           .subscribe(consumer)
           .untilUnbind()
   }

3) Где didStateValueChange - это просто сравнение прошлого значения version для конкретного стейта, то есть делегат хранит мапу стейтов

Вопрос: вроде работает, но выглядит слишком просто чтобы быть правдой -> где я накосячил?
Зачем это все? Все не дает покоя лишний рендер при ребинде?)
источник

L

Leo in RxPM
Ага
источник

L

Leo in RxPM
Ну и если можно как-то побороться, то почему нет?
источник

DG

Dmitriy Gorbunov in RxPM
Мой совет - не стоит городить костыли чтобы экономить на спичках
источник

DG

Dmitriy Gorbunov in RxPM
Вон в MVI на каждый чих идет рендер ViewState
источник

L

Leo in RxPM
Кому спички, а кому и существенная экономия)
источник

L

Leo in RxPM
Поэтому мне не нравится mvi
источник

L

Leo in RxPM
А если абстрагироваться от полезно/не полезно, то сама идея имеет право на жизнь или я что-то упустил?
источник