Size: a a a

2021 May 24

GB

Gregory Bass in Kotlin Android
Делал вот по этому видео уроку. Но у меня почему-то нет binding у холдера
https://youtu.be/vmJFXmefBsM
источник

IK

Ilya Kokhan in Kotlin Android
источник

GB

Gregory Bass in Kotlin Android
Спасибо!
источник
2021 May 26

АГ

Александр Горшков... in Kotlin Android
Всем привет. Подскажите, как можно пошарить Flow между разными экранами, не пересоздавая его заново?

У меня есть BroadcastReceiver, который я обернул в callbackFlow. Но использую я его на разных экранах, и если просто каждый раз вызывать функцию создания callbackFlow, то будет каждый раз инициализироваться подписка к Broadcast. Можно ли один раз подписаться на него и просто каждый раз шарить один и тот же Flow?

Смотрел в сторону shareIn(), но что-то не получилось сделать
источник

В

Виктор in Kotlin Android
Можно поместить его в общую ViewModel, если речь о фрагментах. Если об активити, то без понятия. shareIn - метод, превращающий обычный Flow в SharedFlow. У вас ведь проблема в том, что вы не можете до одного и того же инстанса флоу достучаться? Если да, то он тоже не вариант.
источник

АГ

Александр Горшков... in Kotlin Android
Да, дело именно в этом. Каждый раз возвращается новый Flow.

Про разные ViewModel — хороший вариант, но если таких кейсов будет несколько, то и ViewModel будет несколько, и это усложнит логику
источник

В

Виктор in Kotlin Android
Так что вы подразумеваете под экранами: активити или фрагменты?
источник

АГ

Александр Горшков... in Kotlin Android
Фрагменты
источник

В

Виктор in Kotlin Android
Тогда вполне можно использовать общую ViewModel и делать collect одного инстанса flow во фрагментах
источник

АГ

Александр Горшков... in Kotlin Android
Да, но как говорил — если у меня таких кейсов будет несколько, то это усложнит логику работы
источник

АГ

Александр Горшков... in Kotlin Android
Но вариант рабочий, спасибо
источник

В

Виктор in Kotlin Android
Если будет несколько и с такой же необходимостью расшаривания одного flow между кучей фрагментов, то продолжайте лучше использовать ту же самую ViewModel, не делайте других для каждого Flow.
источник

АГ

Александр Горшков... in Kotlin Android
Да, тоже вариант👍
источник

T

The The in Kotlin Android
кстати, не используйте лямбды когда регистрируете обсерверы.
источник

AM

Andrew Mikhaylov in Kotlin Android
Я думаю, если кому-то понадобится обсервер отписать, он догадается. Если уж предупреждать, то лучше о методрефах :)
источник

T

The The in Kotlin Android
ну, я вот не догадался что там оптимизация такая и ловил краши потом в продакшене
источник

IK

Ilya Kokhan in Kotlin Android
Вот сейчас непонятно было
источник

AM

Andrew Mikhaylov in Kotlin Android
Я чёт тоже не сообразил. Методрефы злобные, да, там каждый раз новый объект, и seemingly нормальный код взорвётся. А лямбду ж для отписки всё равно куда-то сложить надо, там айдентити на месте будет.
источник

T

The The in Kotlin Android
типа такого. котлин использует тот же инстанс
источник

AM

Andrew Mikhaylov in Kotlin Android
Ааа. Это не котлин, это р8 :)
источник