我想知道是否有一个cache()操作员可以缓存x个排放,但也可以在指定的时间间隔(例如1分钟)后终止它们。我在找像这样的东西。
Observable<ImmutableList<MyType>> cachedList = otherObservable
.cache(1, 1, TimeUnit.MINUTES); 这将缓存一个项目,但会在一分钟后过期并清除缓存。
我做了一些研究,找到了replay运算符。它似乎可以满足这一需求,但我有一些问题。为什么这么热,需要接入?这是否使它与cache()运算符不同?我知道cache()模仿了一个主题,但它不需要连接。
发布于 2015-09-12 17:21:07
cache和replay用于不同的用例。Cache是一个自动连接的replay-everything容器,通常用于长期回放。Replay可以有更多的参数化,可以进行有限的时间/大小的回放,但需要开发人员指定何时开始。autoConnect()操作符允许您将这样的ConnectableObservable实例转换为普通的Observable,一旦订阅者订阅了它们,它就会连接到源。这样,您就可以有一个有界的、自动连接的重播(需要RxJava 1.0.14+):
source.replay(1, TimeUnit.SECONDS).autoConnect().subscribe(...);https://stackoverflow.com/questions/32522017
复制相似问题