Rxjava tolist()未完成
我的RxJava调用链有问题。收费表工作不正常。我猜托利斯特需要一些东西来完成。这就是它被卡住的原因。但我不知道如何解决这个问题 代码 也许在RxJava比我优秀得多的人可以指出我做错了什么 更新Rxjava tolist()未完成,java,android,rx-java,reactive-programming,Java,Android,Rx Java,Reactive Programming,我的RxJava调用链有问题。收费表工作不正常。我猜托利斯特需要一些东西来完成。这就是它被卡住的原因。但我不知道如何解决这个问题 代码 也许在RxJava比我优秀得多的人可以指出我做错了什么 更新 mModel.getLocations仅从Room Peristance storage调用loadAllLocations,如上所述我以前从未使用过Room,但根据本文: 现在,每次更新用户数据时,我们的可流动对象都将 自动发出,允许您根据最新的 数据仅当查询结果包含时,Flowable才会发出 至
mModel.getLocations仅从Room Peristance storage调用loadAllLocations,如上所述我以前从未使用过Room,但根据本文: 现在,每次更新用户数据时,我们的可流动对象都将 自动发出,允许您根据最新的 数据仅当查询结果包含时,Flowable才会发出 至少一排。当没有与查询匹配的数据时,可流动 不会发出onNext或onError
所以,Flowable会对每次数据更改做出反应,这意味着永远不会调用onComplete。在这种情况下,您不能使用toList运算符,因为此流永远不会完成。toList运算符的关键点是它将等待所有项目发出。一旦完成,就意味着必须调用onComplete方法,在那里我们将得到我们想要的结果。如果我们没有使用onComplete,或者由于某些原因onComplete没有被调用,那么将不会打印任何内容 那么,mModel.getLocations真的完成了吗?在帖子中添加了更多信息。它所做的唯一一件事就是从存储中调用loadAllLocations
mModel.getLocations()
.flatMapIterable(new Function<List<Location>, List<Location>>(){
@Override
public List<Location> apply(final List<Location> locations) throws Exception {
return locations;
}
})
.filter(new Predicate<Location>() {
@Override
public boolean test(final Location location) throws Exception {
return location.searchExistInNameOrKeyWord(input);
}
})
.toList()
.map(new Function<List<Location>, List<Location>>() {
@Override
public List<Location> apply(List<Location> locations) throws Exception {
/** Doing some random work with the list and then returning */
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<List<Location>>() {
@Override
public void accept(final List<Location> locations) throws Exception {
mView.setAdapterItems(locations);
}
});
@Query("SELECT * from location")
Flowable<List<Location>> loadAllLocations();