TGViewer
ANDROID SCHOOL.RU - Android на практике ANDROID SCHOOL.RU - Android на практике @android_school_ru · 943 subscribers
Post #355 1.38K
История одного бага или не все буферы одинаково полезны.

Сегодня расскажу вам интересную историю, которая произошла при рефакторинге одного из проектов. В коде одного из интеракторов начал падать SQL-запрос SQLiteException: too many SQL variables.

Долго искали ошибку, и подозрение упало на недавно переписанную логику с RxJava на Kotlin Flow. Сравните 2 цепочки:

Цепочка на Kotlin Flow

var ids = listOf(1,2,3,4,5,6,7,8,9,10)
flowOf(ids)
.buffer(BUFFER_SIZE)


Цепочка на RxJava

var ids = listOf(1,2,3,4,5,6,7,8,9,10)
Observable.fromIterable(ids)
.buffer(BUFFER_SIZE)


Может показаться, что они выглядят одинаково, однако это заблуждение. Более подробно о том, как работает оператор buffer() в Kotlin Flow с диаграммами и код-сниппетами я рассказал в посте , ну а для самых нетерпеливых, проблема была в операторе buffer(). Оператор buffer() в Kotlin Flow позволяет нам запускать коллектор на другой корутине. И это позволяет нам выполнять параллельно работу коллектора и эмиттера. В отличие от оператора Observable.buffer(), marble-диаграмма которого показана в посте.
  • 👍 8
  • 🔥 4
More from @android_school_ru
  1. Oct 8, 2026Как быть Android-разработчику в эпоху перемен? Спасибо всем, кто принял участие в опросе п…
  2. Sep 28, 2026Post #401
  3. Sep 14, 2026​​Как ChatGPT украл у начинающих разработчиков самое важное. Вчера был День программиста,…
  4. Sep 9, 2026Как научиться решать задачи на Leetcode Знаю, что многих разработчиков буквально вводят в…
  5. Sep 1, 2026🎓 1 сентября - хороший повод снова чему-то поучиться. Особенно если осенью планируете ход…
  6. Aug 31, 2026​​Получил оффер в Яндекс и ... отказался. Да, вы не ошиблись, сам отказался 😁. Никогда не…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →