为什么使用toList()的debounce()在RxAndroid中不起作用?

当我使用debounce()时,然后从后端和数据中获取数据
我想转换为另一个数据,最后使用toList().
当我使用toList()没有任何事情发生没有任何日志不在订阅错误,没有toList()它的工作和subscribe()方法进入尽可能多的我有书的清单,我测试了它的代码的第二部分没有去抖动()只是getItems()并使用toList()它的工作原理.
下面是我的代码,第一部分是debounce()和itList(),它不起作用,第二部分是toList(),它起作用
public Flowable<List<Book>> getItems(String query) {}

textChangeSubscriber
            .debounce(300,TimeUnit.MILLISECONDS)
            .observeOn(Schedulers.computation())
            .switchMap(s -> getItems(s).toObservable())
            .flatMapIterable(items -> items)
            .map(Book::convert)
            .toList()
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(books -> {
                Log.i("test","" + books.toString());
            },error -> {
                Log.i("test","" + error);
            });


   getItems(query).flatMapIterable(items -> items)
            .map(Book::convert)
            .toList()
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.io())
            .subscribe(books -> {
                Log.i("test","" + "" + books.toString());
            },"" + error);
            });

解决方法

toList需要终止序列,而不会在响应文本事件的外部流上发生.您应该将书籍的处理移动到switchMap中:
textChangeSubscriber
        .map(CharSequence::toString) // <-- text components emit mutable CharSequence
        .debounce(300,TimeUnit.MILLISECONDS)
        .observeOn(Schedulers.computation())
        .switchMap(s -> 
              getItems(s)
              .flatMapIterable(items -> items)
              .map(Book::convert)
              .toList()
              .toFlowable() // or toObservable(),depending on textChangeSubscriber
        )
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(books -> {
            Log.i("test","" + books.toString());
        },error -> {
            Log.i("test","" + error);
        });

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...