我正在将我的项目从Rx v1转换为Rx v2,目前我正在将一些v1 Observable转换为v2 Flowable

(它在Android项目中,使用Spock在Groovy中编写单元测试)

通常我只会使用钩子覆盖调度器。我仍然可以通过注册调度程序处理程序在v2中做到这一点。这通过始终使用(新的?) Schedulers.single()使Observable同步。但是,由于背压机械(?)的原因,Flowable仍然是异步的。

我尝试使用以下方法来解决这个问题:

Flowable<LogEntry> flowable = Flowable.create(new FlowableOnSubscribe<LogEntry>() {
    @Override
    void subscribe(FlowableEmitter<LogEntry> emitter) throws Exception {
        for (def log : logs) {
            emitter.onNext(log)
        }

        emitter.onComplete()
    }
}, FlowableEmitter.BackpressureMode.NONE);

但这仍然使它们成为异步的。

我像这样重写了调度器:

RxJavaPlugins.reset()
RxJavaPlugins.setIoSchedulerHandler(new Function<Scheduler, Scheduler>() {
    @Override
    Scheduler apply(Scheduler scheduler) throws Exception {
        return Schedulers.single()
    }
})

RxAndroidPlugins.reset()
RxAndroidPlugins.setMainThreadSchedulerHandler(new Function<Scheduler, Scheduler>() {
    @Override
    Scheduler apply(Scheduler scheduler) throws Exception {
        return Schedulers.from(new Executor() {
            @Override
            void execute(Runnable command) {
                command.run()
            }
        })
    }
})

我似乎弄不明白为什么Observable表现得如此同步,而Flowable却不是(除了背压机)。

转载请注明出处:http://www.yutianjidian.com/article/20230526/1997994.html

随机推荐

  1. 为Python项目启用poetry和pyproject.toml

    0. 题引 为什么要使用poetry? 因为想使用pyproject.toml,并通过pyproject.toml进行依赖包管理,目前pip还不支持,所以poetry是首选 为什么要使用pyproject.toml? 首先pyte...

  2. 为Outlook日历添加节假日小技巧无论节日还是放假都不容错过

    对于办公一族,Office中的Outlook逐渐成了日常工作交流的必备品,但是对于单调的日历功能,你是否很无奈,下面脚本之家分享下为Outlook日历添加节假日的小技巧,节日还是放假,都不容错过。 操作步骤:以添加中国节假日为例 1、打开...

  3. 为useState的react-native挂钩解析ts(2339)

    我在我的react原生应用中使用useState,如下所示:const [loginDetails, setLoginDetals] = useState({});复制当我试图访问loginDetails的属性时,我从eslint得到一个t...

  4. 未保存的word文档如何恢复?找回电脑异常关机未保存的word文档的方法

    你是不是还在为辛辛苦苦坐在电脑旁忙活了半天终于表格快要完成了,突然断电了,又要开始重新制作表格而发愁,今天小编为大家讲解下如何恢复突然断电时未保存的word,excel文档。 1、打开我的电脑找到【C:\Users\Administrat...

  5. 为phpfox编写新的应用程序

    我想为我自己的phpfox项目创建一个新的应用程序。但是当我转到我的应用程序链接时,我看到这个错误页面无法加载模块模板: todo-controller/index。

  6. 为班级成员使用智能指针

    我在理解智能指针在C ++ 11中作为类成员的用法时遇到了麻烦。我已经阅读了很多关于智能指针,我想我不知道如何unique_ptr和shared_ptr/ weak_ptr做工一般。我不明白的是真正的用法。似乎每个人都建议将其unique_...

  7. 为c++构建nana时出现make“错误

    我一直在尝试为c++安装nana库。我使用过这些指南:https://github.com/qPCR4vir/nana-docs/wiki/Installationhttps://github.com/qPCR4vir/nana-docs/...

  8. 位运算贪心

    目录 位运算 贪心算法 位运算 ^1翻转 ^0不变 0置0 1不变 |1 置1 |0 不变 // k位置0: x = ~(1 m) // k位置1: x |= (1 m) // k位取反: ...

  9. 为NSView初始化/同步OpenGL的正确方法

    我按照苹果的文档创建了一个定制的OpenGLView,而不是使用NSOpenGLView。绘图看起来很好,除了我这里似乎有线程同步问题。由于NSView应该在主线程中,然后如何同步线程,我的意思是CADisplayLink似乎在不同的线程上...

  10. 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 win2008R2 X64 IIS7.5

    未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 win2008R2 X64 IIS7.5 部署以前asp.net 2.0的网站,数据库是ACESS的。服务器上报错。 未在本地计算机上注册“Microsof...