Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rxjava tolist()未完成_Java_Android_Rx Java_Reactive Programming - Fatal编程技术网

Rxjava tolist()未完成

Rxjava tolist()未完成,java,android,rx-java,reactive-programming,Java,Android,Rx Java,Reactive Programming,我的RxJava调用链有问题。收费表工作不正常。我猜托利斯特需要一些东西来完成。这就是它被卡住的原因。但我不知道如何解决这个问题 代码 也许在RxJava比我优秀得多的人可以指出我做错了什么 更新 mModel.getLocations仅从Room Peristance storage调用loadAllLocations,如上所述我以前从未使用过Room,但根据本文: 现在,每次更新用户数据时,我们的可流动对象都将 自动发出,允许您根据最新的 数据仅当查询结果包含时,Flowable才会发出 至

我的RxJava调用链有问题。收费表工作不正常。我猜托利斯特需要一些东西来完成。这就是它被卡住的原因。但我不知道如何解决这个问题

代码

也许在RxJava比我优秀得多的人可以指出我做错了什么

更新


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();