使用 Rxjava 检测值变化

2024-01-06

我们可以使用 RxJava 检测类成员值是否发生更改吗?假设一个类中有一个变量 var,现在我们可以使用 RxJava 在 var 的值发生变化时收到通知。


你可以使用这样的东西:

private final BehaviorSubject<Integer> subject = BehaviorSubject.create();
private Integer value=0;

public Observable<Integer> getUiElementAsObservable() {
    return subject;
}

public void updateUiElementValue(final Integer valueAdded) {
    synchronized (value) {
        if (valueAdded == 0)
            return;
        value += valueAdded;
        subject.onNext(value);
    }
}

并像这样订阅它:

compositeSubscription.add(yourClass.getUiElementAsObservable()
            .subscribe(new Action1<Integer>() {
                @Override
                public void call(Integer userMessage) {
                    setViews(userMessage,true);
                }
            }));

您必须为所有想要订阅其更改的变量创建 setter,并在应用更改时调用 onNext。

UPDATE

当观察者订阅一个行为主体,它首先发出源 Observable 最近发出的项

您可以在这里查看其他类型的主题:http://reactivex.io/documentation/subject.html http://reactivex.io/documentation/subject.html

一些有用的链接: 关于反应式编程:https://gist.github.com/staltz/868e7e9bc2a7b8c1f754 https://gist.github.com/staltz/868e7e9bc2a7b8c1f754关于 rxjava :https://youtu.be/k3D0cWyNno4

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

使用 Rxjava 检测值变化 的相关文章

  • 如何使用android ndk r9b为Android编译FFMPEG

    我想设计一个Android应用程序 可以通过FFMPEG命令播放和编辑视频 但我不知道如何在Android上使用FFMPEG 我尝试过从Google搜索到的许多方法 但它们太旧了 无法实现 现在 FFMPEG的最新版本是2 1 1 Andr
  • Java ZIP - 如何解压缩文件夹?

    是否有任何示例代码 如何将 ZIP 中的文件夹部分解压到我想要的目录中 我已将文件夹 FOLDER 中的所有文件读取到字节数组中 如何从其文件结构创建 我不确定你所说的部分是什么意思 您的意思是在没有 API 帮助的情况下自己完成吗 如果您
  • 如何查找给定字符串中仅出现一次的第一个字符[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 迭代 Sqlite-query 中的行

    我有一个表布局 我想用数据库查询的结果填充它 我使用全选 查询返回四行数据 我使用此代码来填充表行内的 TextView Cursor c null c dh getAlternative2 startManagingCursor c th
  • Kotlin 协程阻塞 Android 中的主线程

    我是 Kotlin 和协程的新手 我有一个fun在我的活动及其内部 检查User用户名和密码 如果为真 则返回Users object 一切都好 但是当我按下按钮时 我的活动被阻止并等待响应Users login 我用这个有趣的 priva
  • 改造添加带有令牌和 ID 的标头

    我在获取经过身份验证的用户时遇到问题 在此之前我得到了令牌和用户 ID 现在我需要使用访问令牌和 ID 从服务器获取用户 我有标题格式 https i stack imgur com OQ87Y png 现在我尝试使用拦截器添加带有用户令牌
  • setOnTouchListener() 给我一个错误

    button setOnTouchListener new OnTouchListener public void onClick View v Toast makeText MainActivity this YOUR TEXT 5000
  • IllegalStateException:无法更改片段的标签,以前是 android:switcher,现在是 android:switcher

    我的活动使用TabLayout ViewPager 这里的选项卡和页面的数量是动态的 具体取决于从服务器获取的数据 崩溃是通过 Crashlytics 报告的 我无法复制它 我的活动代码 Override protected void on
  • Spring Oauth2. DaoAuthenticationProvider 中未设置密码编码器

    我对 Spring Oauth 和 Spring Security 很陌生 我正在尝试在我的项目中使用 client credentials 流程 现在 我设法使用自己的 CustomDetailsS ervice 来从系统中已存在的数据库
  • 在 WebView 中打开 PDF 文件

    大约 2 天 我尝试在我的自定义中打开 PDF 文件WebvView 这是我的WebView code import android app AlertDialog import android app ProgressDialog imp
  • 为什么我们在同一台服务器上使用多个应用程序服务器实例

    我想这是有充分理由的 但我不明白为什么有时我们会在同一物理服务器上放置例如 5 个具有相同 Web 应用程序的实例 这与多处理器架构的优化有关吗 JVM 或其他允许的最大内存限制 嗯 过了很长一段时间我又看到这个问题了 一台机器上的多个 J
  • 表达式的类型必须是数组类型,但它解析为浮点数

    当我编写 Java 代码时 我遇到了困难 我觉得我不知何故把这个概念弄乱了 就像我不确定这一点 void setScore float sco sco score public void setScore float sco int id
  • 设置 LinearLayout 的最大宽度

    如何设置水平线的最大宽度LinearLayout 因此 如果内容较短 例如某些文本 布局会缩小 如果内容较长 则布局不会扩展超过某个最大宽度值 我更喜欢在 XML 级别执行此操作 这就是我所需要的超出了之前答案中的建议 https stac
  • java.lang.OutOfMemoryError:尝试将 Java 对象转换为 Json 字符串时的 Java 堆空间

    我尝试将 csv 文件转换为 200K 对象的 Json 文件 其中对象代表 csv 中的 1 行 我在 32 位上安装了 Java 并且项目配置 VM 参数 Xmx1024m 但是我得到 Exception in thread main
  • AAR 可以包含传递依赖吗? [复制]

    这个问题在这里已经有答案了 现在我有一个库项目 比如项目 Foo 它依赖于像 OkHttp 这样的库 现在 Foo 有一个 Maven 构建步骤 可以生成 AAR 并将其推送到公共位置 现在假设我有项目 B 我们将其称为 Bar Bar是一
  • 膨胀类 android.support.design.internal.BottomNavigationView 时出错

    我正在制作我的第一个应用程序 这是一个简单的应用程序 带有启动屏幕和主要活动 现在我有两个构建变体 免费版本 活动底部有 Admob 横幅 付费版本 该应用程序不会在底部显示 admob 横幅 而是将其替换为用于切换活动的底部导航视图 我将
  • 如何在给定的纬度和经度处使用标记/覆盖项目启动地图意图?

    我有一个纬度和经度 我想打开以该点为中心的谷歌地图 所以我使用以下代码 Intent intent new Intent android content Intent ACTION VIEW Uri parse geo lat lng st
  • 智能手机可以通过 3G/4G 进行点对点通信吗?

    我正在尝试编写一个应用程序 将数据从一个 Android 设备传输到另一个 Android 设备 但这些设备很可能位于城市 州或国家的不同部分 直接的方法是拥有一台中央服务器 或任何类型的服务器 但我试图避免使用中央服务器 我试图传递的数据
  • Java:将秒转换为分钟、小时和天[重复]

    这个问题在这里已经有答案了 任务是 输出应如下所示 最好回显输入 您输入了 500 000 秒 即 5 天 18 小时 53 分钟 20 秒 5天18 53 20小时 我该怎么做呢 最容易理解和做到的方法是什么 讲师还说 没有硬编码 我不太
  • Android,Volley请求,响应阻塞主线程

    使用 Volley 处理较大响应时会发生一些不好的事情 String url AppHelper DOMAIN service pages profile update json this infoTextView setText getS

随机推荐

  • 对于 LINQ 或 lambda 表达式中的比较字符串,什么相当于从句?

    如何使用 LINQ 或 Lambda 表达式过滤两个字符串的查询间隔 example SELECT FROM dbo Country WHERE Name BETWEEN Argentina AND Jamaica 肇事者 gt 和 x N
  • 如何在序列图中呈现静态类或函数调用?

    静态类或静态函数的调用如何在序列图中呈现 根据我的理解 生命线属于类的实例 对象 says 元类可以使用刻板印象 如有疑问 请使用评论或刻板印象 时序图 lt
  • 从 Woocommerce 中的 woocommerce_created_customer 挂钩获取用户元数据

    我正在使用 woocommerce API 创建客户 API 工作正常 新客户正在 WP 中创建良好的内容 但问题是 当我使用钩子 woocommerce created customer 时 我无法获取用户元数据 例如 名字 姓氏 等 这
  • 不使用预定义函数在汇编中打印字符串

    我必须在汇编中定义一个函数 该函数允许我循环遍历声明的字节字符串并使用 BIOS 中断打印它们 我处于 16 位实模式 这是一个根据教科书编写一个小引导加载程序的练习 但看起来这只是一个草稿 并且缺少一些东西 我得到了以下代码 org 0x
  • 并行运行单独的进程 - Python

    我使用 python 多处理 模块在多个核心上运行单个进程 但我想并行运行几个独立的进程 例如 进程一解析大文件 进程二在不同文件中查找模式 进程三进行一些计算 所有这三个具有不同参数集的不同处理可以并行运行吗 def Process1 l
  • 如何以编程方式将注释插入 Microsoft Word 文档?

    寻找一种以编程方式将注释 使用 Word 中的注释功能 插入 MS Word 文档中的特定位置的方法 我更喜欢一种可在最新版本的 MS Word 标准格式中使用并可在非 Windows 环境中实现的方法 最好使用 Python 和 或 Co
  • 从 Visual Studio 发布 Android 应用程序:在选择频道中禁用 Google Play 选项

    Visual Studio 存档 https i stack imgur com 5F6xt png 当我尝试从 Visual Studio 存档管理器 发布 Android 应用程序时 Google Play 选项现在呈灰色 Ad Hoc
  • 如何维护开发代码和生产代码? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 维护代码时要遵循的最佳实践和经验法则是什么 在开发分支中只拥有生产就绪的代码是一个好的做法 还是应该在开发分支中提供未经测试的最新代码 你们如何
  • 如何检查程序是否从控制台运行?

    我正在编写一个应用程序 它将一些诊断信息转储到标准输出 我想让应用程序以这种方式工作 如果它是从独立命令提示符运行的 通过cmd exe 或将标准输出重定向 通过管道传输到文件 完成后立即干净地退出 否则 如果它是从窗口运行并且控制台窗口是
  • 在调用链上传递异常

    希望得到解释 通过在我的方法 throws 子句中声明异常来将异常传递到调用链意味着什么 以及为什么我要这样做 这是我对抛出自己的异常的理解的一个例子 public class ExceptionThrow char charArray n
  • 一次获取 NumPy 数组中多个元素的索引(可以重复)

    有没有办法同时获取 NumPy 数组中多个元素的索引 例如 import numpy as np a np array 1 2 4 b np array 1 1 3 2 4 我想找到每个元素的索引a in b 即 0 1 3 4 请注意 b
  • 将变量从 python 文件传递​​到机器人框架变量

    我在机器人框架中分配变量为 Variables TestNAME test 但是我可以从 python 文件传递 变量值吗 test py var test 是否可以赋值var to TESTNAME 如果您有一个名为 test py 的文
  • 根据行/列值设置 GridView 值 ItemStyle 前景色

    我有一个 ASP netGridView输出三列数据 订单编号 订单状态和订单日期 我想设置OrderStatus Field Value RED IF the status Cancelled 我不确定如何查看输出每行的该字段的值并确定状
  • 通过客户端 XHR 打开 Soundcloud Track 的stream_url?

    由于您可以通过 XHR 调用 Soundcloud API 因为它发送的 CORS 标头http backstage soundcloud com 2010 08 of cors we do http backstage soundclou
  • 如何在包含 500+ 张图片的页面上实现延迟加载?

    我基本上有一个预订引擎单位结果页面must显示 40 个单元 每个单元有 1 个大图像的第一个缩略图和 X 个伴随的缩略图 我一直在使用 jquery 延迟加载插件 但它不够彻底 我在 DOM Ready 上调用它 而且它在 IE 中不起作
  • 将位于 SharePoint Server 中的 Excel 文件导入到 SSIS

    在 SSIS 数据流任务中 我寻求使用连接到位于 SharePoint 服务器中的 xlsx 文件的 Excel 源任务来导入数据 最好不要下载其他软件 在 Excel 连接管理器中 我使用以下 Excel 文件路径格式 UNC sps s
  • setData() 上的 CKEditor 内存泄漏

    我认为我遇到了一些与 CKeditor setData 函数相关的大内存泄漏 我有一个网络应用程序 用户可以使用 Javascript 设计自己的内容 CKEditor作为所见即所得的编辑器 供用户编写设计各部分的内容 每次用户单击其设计中
  • extjs - 如何禁用商店分页

    每当商店 Ext data Store 从服务器读取数据 它发送分页参数 例如 page 1 start 0 limit 25 in a json代理或 page 1 start 0 limit 25 用一个direct proxy 我想在
  • 使用图像代替 Bootstrap 的字形图标

    I would like to use a custom image in an input group instead of a Bootstrap glyphicon without padding bottom my image to
  • 使用 Rxjava 检测值变化

    我们可以使用 RxJava 检测类成员值是否发生更改吗 假设一个类中有一个变量 var 现在我们可以使用 RxJava 在 var 的值发生变化时收到通知 你可以使用这样的东西 private final BehaviorSubject