当 Observable/Completed 完成或释放时,RxJava2 获取事件

2023-12-22

当我订阅时我需要显示一个进度对话框Completable并在操作完成(成功或有错误)或取消后隐藏它。

So I do

final Completable completable = notificationRepository.markAllAsRead()
        .doOnSubscribe(d -> progressDialog.show())
        .doOnError(error -> progressDialog.dismiss())
        .doOnComplete(() -> progressDialog.dismiss())
        .doOnDispose(() -> progressDialog.dismiss());

有没有什么优雅的方法来获得单一回调onError, onComplete or onDispose发生?


我做了一些测试,所以

doOnDispose当订阅者取消订阅时调用,完成后就不再调用。

doOnCompleteObservable/Completable成功完成。 (错误不会发生)

doOnError被调用时Observable/Completable发出错误。 (OnComplete不被调用)。

doOnTerminate被调用时Observable/Completable发出一个error or completes。所以就是doOnComplete + doOnError

doFinally被调用时Completable/Observable信号onError or onComplete或被处置。原来如此doOnDispose + doOnError +doOnComplete.

So doFinally就是我一直在寻找的,谢谢 akarnokd 的帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 Observable/Completed 完成或释放时,RxJava2 获取事件 的相关文章

随机推荐

  • php.ini 和 .htaccess 有什么区别?

    假设我想改变的值 php value post max size 20M in htaccess post max size 20M in php ini 两者都会执行相同的操作 那么有什么区别php ini and htaccess 中的
  • 如何从意图服务向活动发送消息[重复]

    这个问题在这里已经有答案了 基本上 我有一个带有进度对话框的活动 我正在向意图发送一条消息 以从互联网加载所有数据 而应用程序中不会出现任何问题 但是 我能够向服务发送消息 但无法将消息重新发送到活动 该怎么办 以下是我向服务发送消息的方式
  • stl::list 对象的最大数量

    问题是在数据集中找到周期性图形模式 所以我有 1000 个时间步长 每个时间步长都有一个图表 编码为整数 因此 该图可能出现 999 个可能的周期 我还定义了一个相位偏移 定义为 时间步模周期 对于在周期为 2 的第 5 个时间步长中首次出
  • 在没有 cookie 的情况下保留浏览器客户端 javascript/HTML 数据

    我创建了一个使用 Python HTML 和 javascript 的网站 主主页有 19 个可编辑变量字段 如果我更改任何这些字段值 然后离开页面 单击我的其他链接选项卡之一 然后返回我的主页 我的所有变量都会重置回默认值 因为页面会重新
  • 如何在 python 中获得按创建日期排序的目录列表?

    获取目录中所有文件的列表 按日期排序 的最佳方法是什么 创建 修改 在 Windows 机器上使用 python 我过去曾使用 Python 脚本执行此操作来确定目录中最后更新的文件 import glob import os search
  • 为什么我不能将 Number 转换为 Double?

    weight是一个字段 数字在火库 https firebase google com docs firestore manage data data types 设置100 int weight json weight double we
  • 我什么时候应该在片段中获得宽度视图

    我在 Linearlayout 中以编程方式添加视图 按钮 LinearLayout 通过 Fragment 中的 XML 进行布局 我想获取按钮宽度 但总是返回0 我用谷歌搜索了这个问题 getWidth 仅适用于WindowFocusC
  • 仅在执行路径上应用传递

    我有一个过程正在分析整个模块 使用runOnFunction 但我想将它应用到每个执行路径上 执行路径是指从程序中的某个点 用 start 注释 开始到程序的终止点 用 end 注释 的指令序列 我假设我必须通过构造 CallGraph 将
  • 使用索引、使用临时、使用文件排序 - 如何解决这个问题?

    我正在开发一个事件跟踪系统 该系统使用一些查找表以及主日志记录表 在我正在编写的报告中 可以选择一个对象来查看统计信息 该界面按重要性递减的顺序显示所有对象 即点击数 两个表的架构 稍微精简 但您明白了要点 CREATE TABLE IF
  • 在 IIS6 上安装 ASP.NET 4.0 和 ASP.NET 2.0

    我读过您创建新应用程序池的位置 一个用于 2 0 站点 一个用于 4 0 站点 但是在创建池来配置框架时我没有看到任何选项 我的问题是我有几个 2 0 站点作为默认网站运行 我在新的虚拟目录下添加了 WCF 4 0 服务 并将框架设置为 4
  • 如何减少最小 Linux 进程的内存占用

    考虑以下 C 程序 pause c void main pause 在 x64 Linux 3 0 0 16 generic 上使用命令 gcc Ospause c opause 进行编译会生成大小约为 8KB 的可执行文件 当我运行这个可
  • 列出具有架构名称的所有存储过程

    任何人都可以建议一种列出数据库中所有存储过程及其模式名称的方法吗 谢谢 SELECT schema OBJECT SCHEMA NAME object id name FROM sys procedures or SELECT schema
  • 如何分步“验证”Symfony 表单 - 而不是调用 $form->isValid()

    我在 Ubuntu 上使用 Symfony 1 3 6 我有一个包含很多字段的表单 我不想一次性显示所有字段 这可能会吓到用户 而是想将表单分成多个阶段 以便用户可以仅填写显示的字段 在每个步骤 阶段 有点像向导 为此 我需要为表单编写自定
  • 了解 Git 和 GitHub 的基础知识 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我不完全理解使用Git或Github的目的 我知道这有助于跟踪您的更改 并且有助于人们与其他人合作 但我不与任何人合作 所以我不知道这
  • 显示导致冲突的提交的作者和提交消息

    我有两个长期运行的分支dev 以及一个遥远的未来版本称为future 我们通过从显示错误的标签分支 修复它 然后向两个分支打开拉取请求来为受支持的版本创建修复程序 如果 未来 分支中存在冲突 我们的开发人员应该创建一个新分支 解决冲突 并向
  • Python 3tell() 在追加+读取模式下与文件指针不同步

    与 Python 2 2 7 15 不同 当打开二进制文件进行追加和读取时 我在 Python 3 3 6 5 中看到奇怪的 f tell 行为 如果当前查找位置为n字节时写入not在文件末尾 以下事情似乎按预期发生 文件指针移至文件末尾
  • 如何在flutter中使用运行时下载的本地化arb/json文件?

    我读了很多关于 flutter 本地化的教程和博客 他们使用 arb json 文件从 asset 文件夹或 l10n 文件夹进行本地化 那是固定的语言列表 意味着如果我使用英语本地化 现在在运行时我想向用户提供西班牙语 中文 意大利语 法
  • spring mvc中如何将用户表单数据发送到服务器

    我有一个这样的登录表单
  • C#。执行 if( a == (b 或 c 或 d))。是否可以?

    还有另一种方法可以写这样的东西 if a x a y a z 我发现的一种方法是这样做 if new x y z Contains a 还有其他好的方法吗 我经常使用模仿 SQL 的扩展方法IN public static bool IsI
  • 当 Observable/Completed 完成或释放时,RxJava2 获取事件

    当我订阅时我需要显示一个进度对话框Completable并在操作完成 成功或有错误 或取消后隐藏它 So I do final Completable completable notificationRepository markAllAs