"пачками". Условно - есть 100 элементов, делаю из них флоу - подписываюсь и получаю не элементы, а листы, например, по 10 элементов, пока вся последовательность не обработается?
А каким образом генерируете данные внутри Flow? Если вручную, то просто в билдере эмитьте списки по 10 элементов.
Flow из базы торчит
Если речь об андроидном Room, то там, если не ошибаюсь, весь список отдается за раз. Вклиньтесь между отдающим методом и коллектором оператором transform и попробуйте написать свою логику.
Пока таким образом и экспериментирую, в трансформ прилетают объекты из базы, добавляю их в лист, проверяю размер листа, если 10 - эмичу, проблема в том, что в последней итерации может быть меньше 10 элементов и они соответственно, отправлены не будут, а понять, что это последняя пачка элементов тоже вроде никак
А вы перед циклом посчитайте количество итераций делением на 10 и проверяйте. Хотя, скорее всего, есть вариант полаконичнее, но это надо подумать хорошо.
И не забудьте в конце всей цепочки трансформаций сменить контекст через flowOn.
Потому что трансформации будут совершены на диспетчере, в котором будет коллектор. Контекст автоматически меняется лишь для самого Dao-метода. Можете сами убедиться с помощью println(Thread.currentThread().name) внутри блока transform.
Обсуждают сегодня