Size: a a a

StartAndroid Ru Kotlin

2020 July 25

СП

Сергей Переходов... in StartAndroid Ru Kotlin
Timur
Типо если хочешь работать в компании как андроид разработчик то должен уметь делать приложение от нуля и до конца?
Да
источник

AD

Andrei Danilenko in StartAndroid Ru Kotlin
как красивее всего из Array объектов сделать например лист стрингов, которые являются полями объекта, просто у Array вроде как нет стрима, как это делается в котлине?
источник

S

Syncended in StartAndroid Ru Kotlin
Andrei Danilenko
как красивее всего из Array объектов сделать например лист стрингов, которые являются полями объекта, просто у Array вроде как нет стрима, как это делается в котлине?
list.map { it.field }
источник

AD

Andrei Danilenko in StartAndroid Ru Kotlin
Syncended
list.map { it.field }
спасибо, круто, лучше стрима)
источник
2020 July 27

V

Vladushka in StartAndroid Ru Kotlin
Доброго времени суток!
нужна помощь: есть extension function представленная на скриншоте и такая extension function:
inline fun unitFlow(crossinline block: suspend () -> Unit) = flow { emit(block()) }

я хочу реализовать следующий код:

launch {
           unitFlow {
               repeat(2){
                   captureCallbackFlow(file, executor)
                       .flatMapConcat{
                           //нужные действия
                       }.collect{
                           //нужные действия
                       }
               }
           }.collect{
               //действие по завершению
           }
       }

проблема в том, что код срабатывает всего 1 раз, может кто-то объяснить, почему
источник

YR

Yevhen Railian in StartAndroid Ru Kotlin
@v_ladyshka какая именно часть кода срабатывает 1 раз?
источник

V

Vladushka in StartAndroid Ru Kotlin
источник

V

Vladushka in StartAndroid Ru Kotlin
обычный flow повторяется тут 2 раза, я проверяла, а callbackFlow нет
и найти никакой информации об этом не смогла
источник

YR

Yevhen Railian in StartAndroid Ru Kotlin
ну, может не повторяться по 2 причинам:
1. у тебя не заканчивается callbackFlow, он продолжает слушать
2. зависит он настроек корутины, а точнее типа job - при отмене flow у тебя может прерываться все выполнение корутины, в данном случае блока launch
источник

YR

Yevhen Railian in StartAndroid Ru Kotlin
@v_ladyshka у тебя первый случай
источник

YR

Yevhen Railian in StartAndroid Ru Kotlin
Vladushka
Доброго времени суток!
нужна помощь: есть extension function представленная на скриншоте и такая extension function:
inline fun unitFlow(crossinline block: suspend () -> Unit) = flow { emit(block()) }

я хочу реализовать следующий код:

launch {
           unitFlow {
               repeat(2){
                   captureCallbackFlow(file, executor)
                       .flatMapConcat{
                           //нужные действия
                       }.collect{
                           //нужные действия
                       }
               }
           }.collect{
               //действие по завершению
           }
       }

проблема в том, что код срабатывает всего 1 раз, может кто-то объяснить, почему
создается listener внутри callbackFlow, но нигде не сетится. соответственно его методы никогда не будут вызваны
источник

YR

Yevhen Railian in StartAndroid Ru Kotlin
@v_ladyshka Вот пример создания callbackFlow с регистрацие слушателя
источник

YR

Yevhen Railian in StartAndroid Ru Kotlin
Сорян, сеттится, не заметил.
но не факт что вызывается.
добавь логирование в методы onImageSaved  и onFailure чтобы убедиться
источник

V

Vladushka in StartAndroid Ru Kotlin
@yevhen_railian спасибо за объяснение, логирование ставила, onImageSaved вызывается
источник

YR

Yevhen Railian in StartAndroid Ru Kotlin
@v_ladyshka  попробуй close вместо cancel после offer
источник

YR

Yevhen Railian in StartAndroid Ru Kotlin
ну а в целом captureCalbackFlow не должет возвращать flow. у тебя one-shot значение - достаточно просто suspend fun 🤷‍♂️
источник

V

Vladushka in StartAndroid Ru Kotlin
спасибо тебе огромное! Наконец-то разобралась и сделала код рабочим
источник

YR

Yevhen Railian in StartAndroid Ru Kotlin
@v_ladyshka, да не за что.

Почитай на досуге https://medium.com/@elizarov/callbacks-and-kotlin-flows-2b53aa2525cf

В идеале все-таки не использовать flow там, где в нем нет необходимости. Старайся делать код как можно проще.

Как говорил наш препод лет 10 назад: "хороший программист пишет 10 строк кода в день". Но это должны быть максимально продуманные строки кода, без лишней воды и ненужного оверхэда.
источник

YR

Yevhen Railian in StartAndroid Ru Kotlin
@v_ladyshka истользование suspend в этом кейсе
источник

V

Vladushka in StartAndroid Ru Kotlin
@yevhen_railian Спасибо!
источник