Size: a a a

2018 October 02

DG

Dmitriy Gorbunov in RxPM
Nikita Yatskivskiy
А почему bind к Pm происходит в onStart, а unbind в onStop? А не, например, в onCreateView/onDestroyView?
чтобы можно было безопасно запускать транзакции фрагментов
источник

DG

Dmitriy Gorbunov in RxPM
Nikita Yatskivskiy
А почему bind к Pm происходит в onStart, а unbind в onStop? А не, например, в onCreateView/onDestroyView?
ну и после onStop экран не виден пользователю, поэтому лучше отсоединять вью чтобы не было отрисовки стейта в фоне
источник

DG

Dmitriy Gorbunov in RxPM
ATTENTION!

Исправили критичный баг в экстеншене
bufferWhileIdle
который используется в
Command
В некторых случаях он мог работать некорректно и приводить к утечке памяти.

Рекомендую обновиться до версии 1.2.2
источник

L

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

DG

Dmitriy Gorbunov in RxPM
Leo
Спасибо, а можно пример такого случая?
Последний тест с подпиской на обычный Observable не проходил
https://github.com/dmdevgo/RxPM/blob/2105b7395293f0cf1802ef0ed693bae957a768ba/rxpm/src/test/kotlin/me/dmdev/rxpm/PmExtensionsTest.kt#L224
источник
2018 October 03

NY

Nikita Yatskivskiy in RxPM
Nikita Yatskivskiy
Ребят, подскажите, пожалуйста, как мне сообщать view, что нужно ли обновиться при получении новых данных или нет? Например на ScreenA есть viewpager. ScreenA от ViewModel получает список табов. Согласно этому списку FragmentStatePagerAdapter создаёт фрагменты (внутри каждого просто список). При переходе на ScreenB по клику на айтем из спика, а затем при возврате на экран ScreenA, этот ScreenA повторно биндится к viewmodel, FragmentStatePagerAdapter’у сетятся опять те же данные и он начинает пересоздавать фрагменты. Как управлять биндингом? Чтобы решать, когда я хочу при биндинге обновить данные, а когда нет.
Сейчас столкнулся с такой проблемой, что если быстро (именно быстро) ухожу со ScreeenA на, например, ScreenC (по клику на кнопку в меню тулбара) и возвращаюсь обратно, то при биндинге к Pm ScreenA не получает от Command (c буфер 1) данные. Хотя подписка остаётся живой до onDestroy. По логам проверял, что в Command действительно сетятся данные. Но вьюшка в ScreeenC эти данные не получает в итоге.
источник

NY

Nikita Yatskivskiy in RxPM
Если вместо Command использую State, то всё нормально. Но в моей ситуации State не совсем подходит.
источник

NY

Nikita Yatskivskiy in RxPM
Ребяяят!! Проверил на версии 1.2.1 - такой проблемы нет!
источник

DG

Dmitriy Gorbunov in RxPM
Dmitriy Gorbunov
ATTENTION!

Исправили критичный баг в экстеншене
bufferWhileIdle
который используется в
Command
В некторых случаях он мог работать некорректно и приводить к утечке памяти.

Рекомендую обновиться до версии 1.2.2
@NikiJava 1.2.2 пофиксили Command
источник

NY

Nikita Yatskivskiy in RxPM
То есть то, что у меня на 1.2.1 всё работает - это наоборот, баг?)
источник

DG

Dmitriy Gorbunov in RxPM
Nikita Yatskivskiy
То есть то, что у меня на 1.2.1 всё работает - это наоборот, баг?)
Из твоего описания сложно понять что у тебя происходит и в чем проблема
источник

DG

Dmitriy Gorbunov in RxPM
Nikita Yatskivskiy
Ребяяят!! Проверил на версии 1.2.1 - такой проблемы нет!
а до этого какая версия была?
источник

NY

Nikita Yatskivskiy in RxPM
Есть экран ScreenA. В методе onCreate я асинхронно получаю список табов. Результат передаю в поле «pages: Command<List<Page>> (buffer = 1)». Затем, не дожидаясь заершения асинхронной операции, я перехожу на другой экран ScreenB. При этом в ScreenA подписка на асинхронную операцию жива. Потом я возвращаюсь на ScreenA, биндюсь к Pm, но данные из поля pages я не получаю.
источник

NY

Nikita Yatskivskiy in RxPM
Я первый раз сегодня попробовал библиотеку. Сразу поставил 1.2.2, как увидел обновление
источник

NY

Nikita Yatskivskiy in RxPM
Сейчас решил попробовать 1.2.1 - всё заработало.
источник

NY

Nikita Yatskivskiy in RxPM
Ощущение, что после unbind Command перестаёт буфферизировать комманды
источник

DG

Dmitriy Gorbunov in RxPM
Nikita Yatskivskiy
Есть экран ScreenA. В методе onCreate я асинхронно получаю список табов. Результат передаю в поле «pages: Command<List<Page>> (buffer = 1)». Затем, не дожидаясь заершения асинхронной операции, я перехожу на другой экран ScreenB. При этом в ScreenA подписка на асинхронную операцию жива. Потом я возвращаюсь на ScreenA, биндюсь к Pm, но данные из поля pages я не получаю.
Можешь набросать тестовый пример, чтобы воспроизвести проблему?
источник

NY

Nikita Yatskivskiy in RxPM
Сейчас начну делать, но скорее всего закончу только завтра.😴
источник

DG

Dmitriy Gorbunov in RxPM
Nikita Yatskivskiy
Сейчас начну делать, но скорее всего закончу только завтра.😴
если получится воспроизвести, заведи пожалуйста исшу на гитхабе
источник

NY

Nikita Yatskivskiy in RxPM
источник