如何在 RxJava 中的动态列表上创建观察者?

2023-12-20

我需要在不断变化的数组上创建一个观察者(添加元素)。

我正在使用 Observable.from(Iterable) 但它似乎在 ArrayList 上创建了 Observable,就像创建时一样。

我需要通知观察者并在每次 ArrayList 添加新元素时执行操作。


就这样吧。感谢 RxJava Google Group 上的 Dávid Karnok

import java.util.ArrayList;
import java.util.List;

import rx.Observable;
import rx.subjects.PublishSubject;

public class ObservableListExample {

    public static class ObservableList<T> {

        protected final List<T> list;
        protected final PublishSubject<T> onAdd;

        public ObservableList() {
            this.list = new ArrayList<T>();
            this.onAdd = PublishSubject.create();
        }
        public void add(T value) {
            list.add(value);
            onAdd.onNext(value);
        }
        public Observable<T> getObservable() {
            return onAdd;
        }
    }

    public static void main(String[] args) throws Exception {
        ObservableList<Integer> olist = new ObservableList<>();

        olist.getObservable().subscribe(System.out::println);

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

如何在 RxJava 中的动态列表上创建观察者? 的相关文章

  • 如何使用RxJava返回值?

    让我们考虑一下这种情况 我们有一些类 它有一个返回某个值的方法 public class Foo Observer
  • Schedulers.io() 上的并行数据库搜索

    我想知道当我并行访问数据库表时是否应该使用 Schedulers io 还是 Schedulers newThread 例如 如果我使用 Schedulers io 并行地从数千个表中选择记录 则任务完成后会在线程池中创建很多新创建的线程
  • EventBus 和 RxJava 有什么区别? [复制]

    这个问题在这里已经有答案了 我对 android 中的 EventBus 和 RxJava 之间的区别感到困惑 我需要实现其中之一来解决我的问题 即在完成某些更改后通知某些组件 以便它们可以更新其状态 另外 我读到 EventsBus 已因
  • 使用 RxJava 处理长时间运行的任务

    我正在尝试迁移AsyncTask向服务器发送消息 使用 RxJava 粗略地说 该任务执行以下操作 1 创建一条将要发送的消息 保存到数据库 2 向用户显示消息 状态 正在发送 3 向服务器发送消息 代码片段如下 4 将消息标记为已发送或失
  • 调试未收到消息的 RxJava 问题的最佳方法是什么

    我有一个 Android 应用程序 其中包含多个A型观察者订阅多个B 类可观测量 订阅是在IO Scheduler中完成的 观察是在Android主线程上完成的 我遇到的问题是随机地经过一些工作后 A 从未收到 B 发出的一条消息 并且经过
  • 使用 RXJava 进行缓存处理

    我正在尝试使用 rxJava 实现此工作流程 但我确定我是否误用或做错了事情 用户要求登录 如果登录结果在缓存中可用 则 发出 缓存的登录结果 否则 如果一切成功 则实际执行对 Web 服务的请求并缓存结果 如果发生错误 最多重试 3 次
  • RxJava Observable.fromEmitter 奇怪的背压行为

    我一直在利用Observable fromEmitter 作为一个绝佳的替代品Observable create 我最近遇到了一些奇怪的行为 但我不太明白为什么会出现这种情况 我真的很感谢对背压和调度程序有一定了解的人来看看这个 publi
  • 如何在 RxJava 中计算移动平均线

    在金融领域 我们通常需要从时间序列数据流中计算移动窗口总值 以移动平均线为例 假设我们有以下数据流 T是时间戳 V是实际值 T0 V0 T1 V1 T2 V2 T3 V3 T4 V4 T5 V5 T6 V6 T7 V7 T8 V8 T9 V
  • 何时使用 doOnTerminate 与 doOnUnsubscribe?

    当有人订阅我的可观察对象时 我需要收到通知 我还需要收到通知 可观察对象已出错或已完成 所以我想我应该使用doOnSubscribe 注册观察者订阅时要采取的操作 可观察的 and doOnTerminate 注册一个 Observable
  • 如何过滤 RXJava 中 observable 发出的重复值?

    我有一个对象集合 我想在其中抑制重复的项目 我知道关于Distinct http reactivex io documentation operators distinct html运算符 但如果我没有记错的话 它会通过正确覆盖的哈希码方法
  • 将 Single> 转换为 Observable

    Goal I get a Single
  • HTTP 失败:java.net.SocketException:套接字已关闭;不启动异常处理方法

    我有一个 RxJava 链请求 应该释放一些 onError 或 onComplete 锁 所以 基本上 我的问题是 当我为 OkHttpClient 设置读取 连接和写入超时时 我没有得到所需的行为 我正在使用 Retrofit2 和 O
  • 如何在改造多部分请求中发送对象数组

    I want to send array objects with multipart data I tried many ways but it is not working My issue with the contributor p
  • RxJava 作为事件总线?

    我开始学习 RxJava 到目前为止我很喜欢它 我有一个片段与单击按钮时的活动进行通信 用新片段替换当前片段 谷歌推荐界面 http developer android com training basics fragments commu
  • 仅当其中一个流发生更改时,combineLatest 才会发出

    我有一个具有频繁值的流和一个具有较慢值的流 我想将它们组合起来 但仅当较慢的发出时才发出一个值 所以combineLatest不起作用 就像这样 a1 a2 b1 a2 b1 a3 a4 a5 b2 a5 b2 目前我正在这样做 有没有更干
  • 如何在BehaviorSubject中设置默认值

    可能是一个菜鸟问题 如何为BehaviorSubject 设置默认值 我有一个具有 2 个不同值的枚举 enum class WidgetState HIDDEN VISIBLE 以及发出状态的行为主体 val widgetStateEmi
  • 如何创建无限间隔的 Observable 并在每个时间间隔发出新的对象?

    我正在尝试创建一个每秒都会发出新对象的 Observable 所以现在我只是压缩一个 Observable 它以 Observable 间隔从列表中发出有限数量的对象 val list1 mutableListOf
  • Single.zip - 如何捕获失败的呼叫并继续其余的网络呼叫?

    我正在进行 5 个并行网络调用 模拟其中 4 个成功 其中 1 个失败 失败的调用使整个Single zip 失败 即使其他 4 个网络调用成功 我也无法获得它们的结果 如何处理单个失败的网络调用的错误Single zip 并获得成功者的结
  • 如何使用 RxJava 处理分页?

    我正在考虑将我的 Android 应用程序转换为使用 Rxjava 进行网络请求 我目前访问的网络服务类似于 getUsersByKeyword String query int limit int offset 据我了解 Observab
  • 用于请求带有临时缓存的远程 Observable 的 RxJava 模式

    用例是这样的 我想暂时缓存最新发出的昂贵的Observable响应 但在它过期后 返回到昂贵的源Observable并再次缓存它 等等 一个非常基本的网络缓存场景 但我真的很难让它工作 private Observable

随机推荐

  • 排除 Twitter 流中的回复 - tweepy

    我正在使用 tweepy 从 Twitter 的流 api 中提取推文 然后我用它来自动回复该用户 例如 如果我想从中提取实时推文然后回复唐纳德 特朗普 我可以使用 import tweepy from tweepy import Stre
  • 在 Apache Kafka 中,为什么消费者实例不能多于分区?

    我正在学习卡夫卡 阅读这里的介绍部分 https kafka apache org documentation html introduction https kafka apache org documentation html intr
  • Android EditText 以编程方式调整大小

    我有一个视图 其中有两个 LinearLayout 一个包含文本 EditText 和一个按钮 另一个仅包含文本和 EditText 我试图让第二个 EditText 在第二行 的宽 度与第一行的宽度相匹配 我尝试将其设为 TableLay
  • 将数据帧转换为 JSON 时删除空数组字段

    有没有什么方法可以通过不使用那些为空的字段来从 Spark 数据帧创建 json 假设我有一个数据框 name hit songs beatles help hey jude romeo eres mia juliet null 我想将其转
  • 解析 TSV 文件

    我需要解析 TSV 格式的文件 制表符分隔值 我使用正则表达式将文件分解为每一行 但我找不到令人满意的正则表达式来解析每一行 现在我已经提出了这个
  • C# 中对 volatile 变量的赋值

    我对 C 的理解 感谢 Jeff Richter 和 Jon Skeet 认为赋值是 原子的 不同的是 当我们混合读取和写入 递增 递减 时 因此我们需要在互锁上使用方法 如果只有读取和分配 这两个操作都是原子操作吗 public clas
  • 理解 HashMap

    好吧 这是我不明白的地方 如果您尝试使用以下方法检索对象get 方法并返回null 仍然有可能null可以存储为与您提供给的密钥关联的对象get 方法 您可以通过将对象的密钥传递给containsKey 地图的方法 这返回true如果密钥存
  • 如何使用 Gradle 将 Java 代码和 Junit 测试放在一起构建

    我有一个项目 其中主要源代码和该源代码的测试用例保存在同一个包 目录中 每个测试类都是其正在测试的类的名称 末尾附加 Test 因此 如果我有一个 Foo java 那么它旁边就会有一个 FooTest java 我的问题是 如何使用 Gr
  • webshim polyfill 画布在 IE7 模式下无法工作

    我在让 webshims 插件 canvas polyfill 工作时遇到问题 使用 IE7 模式在 IE9 中出现以下错误 SCRIPT438 Object doesn t support property or method fillR
  • 使用 awk / sed 查找并替换文件中的键值对到其他文件

    我有一个键值文件 名为key txt 有一个 分隔器 这是值的显示方式 server name server1 username someuser keyname 123key 我的第二个文件是一个脚本文件 文件中到处都有这些键 它以以下格
  • 用于非零基数组指针分配的 C++ gcc 扩展?

    我正在寻找 gcc 支持的 C 语言扩展来启用非从零开始的数组指针的分配 理想情况下我可以简单地写 include
  • 优化 Cython 中的字符串

    我试图向我们的小组展示 Cython 在增强 Python 性能方面的优点 我已经展示了几个基准 所有这些都通过以下方式实现加速 编译现有的 Python 代码 使用 cdef 静态类型变量 特别是在内循环中 然而 我们的大部分代码都进行字
  • pyvenv 安装错误的 pip 版本

    我正在创建一个 virtualenvpyvenv env但安装的 pip 版本已过时 我可以在虚拟环境中手动更新 pip 但我希望自动获得正确的版本 没有激活 venv gt pip V pip 7 1 2 from usr lib pyt
  • 查找所有应用程序文件夹并在 Inno Setup 中安装文件

    这是一个类似的问题找到应用程序的路径 并将文件复制到 Inno Setup 中的该目录 https stackoverflow com questions 46282559 我想将文件安装到 Inno Setup 中用户的 MATLAB 文
  • 如何解读uops.info?

    我查了一下说明在 uops info 上尝试找出 1 延迟是多少 以及 2 我可以执行多少个并发负载 我在解释结果时遇到困难 下面的屏幕截图 上面也有链接 What do the different variants of the inst
  • 一旦使用pthread满足条件,for循环就不会终止

    当我发现 for 循环没有终止时 我正在编写一段多线程代码 起始代码大致是这样的 for int i V 1 tid i gt 0 i NTHREADS stuff V 和 NTHREADS 是常量 tid 是使用传递的线程 IDpthre
  • Jupyter:在不同的单元格中重新绘制

    我想做这样的事情 import matplotlib pyplot as plt matplotlib inline fig1 plt figure 1 plt plot 1 2 3 5 2 4 plt show 在一个单元格中 然后在另一
  • Swift 3 和 iOS 10 错误内存泄漏错误

    当与 iOS 10 和 Swift 3 一起使用时 Xcode 8 中似乎存在 错误的 内存泄漏错误 以下代码报告 Instruments 和 Xcode 8 内存调试器中的内存泄漏 class SomeClass NSObject var
  • Python将文本文件转换为字典

    我正在编写一个拼写检查函数 并且我有一个如下所示的文本文件 teh the cta cat dgo dog dya day frmo from memeber member 错误的拼写位于左侧 这将是我的密钥 正确的拼写位于右侧 我的值 d
  • 如何在 RxJava 中的动态列表上创建观察者?

    我需要在不断变化的数组上创建一个观察者 添加元素 我正在使用 Observable from Iterable 但它似乎在 ArrayList 上创建了 Observable 就像创建时一样 我需要通知观察者并在每次 ArrayList 添