我有一个Observable,它发出许多对象,我想使用window
或buffer
操作对这些对象进行分组。但是,我希望能够使用自定义条件,而不是指定count
参数来确定窗口中应包含多少个对象。
例如,假设可观察对象正在发出Message
类的实例,如下所示。
class Message(
val int size: Int
)
我想基于消息实例size
而不是其计数来缓冲或窗口化消息实例。例如,要获取总大小最大为5000的消息窗口。
// Something like this
readMessages()
.buffer({ message -> message.size }, 5000)
有一种简单的方法吗?
答案 0 :(得分:3)
首先,我必须承认,我不是RxJava专家。 我刚刚发现您的问题具有挑战性,并试图找到解决方案。
有一个带有参数window()
的{{1}}函数。如果达到窗口大小,则必须创建一个boundaryIndicator
/ Publisher
来发出一个项目。
在该示例中,我创建了一个对象Flowable
,该对象用作windowManager
。在boundaryIndicator
回调中,我调用onNext
并给它机会打开一个新窗口。
windowManager