Size: a a a

2019 April 12

L

Leo in RxPM
Extension functions - наше все
источник

AR

Alexey Rybakov in RxPM
Думал на счет того что бы использовать отдельные классы как плагины для View с биндингом, но столкнулся с тем, что экстеншены bindTo работали только в наследниках AndroidPmView, похоже во 2 версии они переехали в State, так что кажется можно так попробовать
источник

L

Leo in RxPM
Правильно, что работали только в наследниках - они ж завязаны на их жизненный цикл
источник

AR

Alexey Rybakov in RxPM
Если так посмотреть, то да, но есть потребность не писать одно и тоже каждый раз. И можно было бы быть наследником, но интерфейс PmView в контексте задачи переиспользования логики биндингов содержит лишний метод -  providePresentationModel.
источник

DG

Dmitriy Gorbunov in RxPM
Alexey Rybakov
Вот  childPM только недавно увидел, еще не удалось заиспользовать. Но в случае с child это потребует, что бы View знала про child и брала стейты из неё?
Используй делегирование
https://kotlinlang.org/docs/reference/delegation.html
источник

AR

Alexey Rybakov in RxPM
Спасибо, обратно на java дороги уже нет😁
источник

DG

Dmitriy Gorbunov in RxPM
Ребят, есть предложение расширить границы биндинга до onCreateView/onDestroyView. Сейчас ребинд происходит на каждый вызов onResume, это не очень хорошо с точки зрения производительности - UI перерисовывается даже если в паузе стейты не обновлялись. С другой стороны, когда экран в паузе не нужно обновлять UI или выполнять команды. Чтобы этого избежать, нужно приостанавливать обновления от стейтов. Я предлагаю ввести дополнительные ЖЦ для ПМ-ки onResume/onPause, чтобы реализовать буферизацию для стейтов пока экран находится в паузе.
По сути получится поведение как в LiveData. Что думаете?
источник

L

Leo in RxPM
Вот это по-нашему) Вот это я одобряю)
источник

L

Leo in RxPM
Но с поправкой: у обычных вьюшек нет дестроя, так что давайте на детач завязываться)
источник

L

Leo in RxPM
В своей реализации я клал код биндинга конкретной вьюшки в лямбду и сохранял ее через теги во вью, чтобы реюзать на детач/аттач
источник

L

Leo in RxPM
Получилось прикольно
источник

AR

Alexey Rybakov in RxPM
На conductor то и не было onResume, onPause значит и проблем не было?
источник

DG

Dmitriy Gorbunov in RxPM
Leo
В своей реализации я клал код биндинга конкретной вьюшки в лямбду и сохранял ее через теги во вью, чтобы реюзать на детач/аттач
Я не очень понял твой кейс с кастомными вьюшками. Если можешь - распиши подробно.
источник

VC

Vasili Chyrvon in RxPM
Leo
В своей реализации я клал код биндинга конкретной вьюшки в лямбду и сохранял ее через теги во вью, чтобы реюзать на детач/аттач
А у тебя форк? Где посмотреть?
источник

DG

Dmitriy Gorbunov in RxPM
Alexey Rybakov
На conductor то и не было onResume, onPause значит и проблем не было?
В кондукторе есть атач/детач он вызывается на onStart/onStop активити. Тоже неплохо бы расширить до onCreateView/onDestroyView
источник

L

Leo in RxPM
Vasili Chyrvon
А у тебя форк? Где посмотреть?
Могу линк в личку скинуть, так-то я кодом не очень горжусь xD
источник

AR

Alexey Rybakov in RxPM
Получается будет буффер для Command, для Action а для State только последнее измененное значение буфферизировать?
источник

DG

Dmitriy Gorbunov in RxPM
Alexey Rybakov
Получается будет буффер для Command, для Action а для State только последнее измененное значение буфферизировать?
Для экшена не нужен, он в пм-ку идет. Для стейта будет буфер с одним значением или что-то подобное.
источник

L

Leo in RxPM
Грубо говоря, у нас сейчас единая точка входа в "биндинг" - метод onBindPresentationModel. Он зависит от жц фрагмента/активити/контроллера и таким образом не дает нам возможности манипулировать жц отдельных вьюх. Потому возникают проблемы с анбиндингом внутри всяких ресайклеров, вьюпейджеров и т.д. Я у себя решил избавиться от него и сделать у каждой вьюшки свой метод setBindings, в который бы передавал блок кода, запускающийся на onAttach и очищающий подписки на onDetach. В итоге получается, что каждая вьюшка имеет свой локальный аналог onBindPresentationModel, который юзает в соответствии со своим локальным жц.
источник
2019 April 19

YS

Yuri Shmakov in RxPM
🤩  Грац! =)
источник