首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在rxjava和rxandroid中的可观察的正确解释

在rxjava和rxandroid中的可观察的正确解释
EN

Stack Overflow用户
提问于 2018-04-27 03:58:40
回答 1查看 42关注 0票数 0

observables和观察者在RxJava中的正确概念和工作原理是什么?我被字面意思弄糊涂了。每当我更改observables的值时,它的相应观察者就不会被调用--我将更深入地解释这种情况,最初,当我为一个observable分配一个字符串列表(列表)并将其订阅给一个观察者时,观察者工作得很好,但在那之后,当我更改list的值(例如向list中添加更多的字符串值)时,...the观察者的next应该自动被正确地调用。但事实并非如此,试图在安卓系统中实现。我会很高兴得到一些帮助的。

EN

回答 1

Stack Overflow用户

发布于 2018-04-27 05:35:01

Observables使用来自Observer的三种方法:onNextonErroronCompleted。当您从列表中创建Observable并订阅它时,可观察到的将使用onNext方法发出这些值,当它完成时,它将调用onCompleted方法。

你不能通过改变你给一些可观测运算符的列表来改变那些可以观察到的值。你想要什么行为。是Observable发出列表更改中的所有元素,还是只发出新的更改。

此可观察到的setCollection方法将发出对集合的所有更改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class CollectionObservable<T> extends Observable<T> {

    private Collection<T> collection;
    private List<Observer<? super T>> observers;

    public CollectionObservable(Collection<T> collection) {
        if (collection != null) {
            this.collection = collection;
        }
        this.observers = new ArrayList<>(2);
    }

    public Collection<T> getCollection() {
        return collection;
    }

    public void setCollection(Collection<T> collection) {
        this.collection = collection;
        emitValuesToAllObserver();
    }

    public void complete() {
        if (this.collection != null) {
            for (Observer<? super T> observer : this.observers) {
                observer.onComplete();
            }
        }
    }

    @Override
    protected void subscribeActual(Observer<? super T> observer) {
        this.observers.add(observer);
        emitValues(observer);
    }

    private void emitValuesToAllObserver() {
        for (Observer<? super T> observer : this.observers) {
            emitValues(observer);
        }
    }

    private void emitValues(Observer<? super T> observer) {
        if (this.collection != null) {
            for (T obj : this.collection) {
                observer.onNext(obj);
            }
        }
    }
}

注意,要完成手动操作,必须调用complete方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50061933

复制
相关文章
LeetCode 1262. 可被三整除的最大和(DP)
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/greatest-sum-divisible-by-three 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Michael阿明
2020/07/13
6240
LeetCode 1262. 可被三整除的最大和(DP)
LeetCode 1015. 可被 K 整除的最小整数(数学)
1. 题目 给定正整数 K,你需要找出可以被 K 整除的、仅包含数字 1 的最小正整数 N。 返回 N 的长度。如果不存在这样的 N,就返回 -1。 示例 1: 输入:1 输出:1 解释:最小的答案是 N = 1,其长度为 1。 示例 2: 输入:2 输出:-1 解释:不存在可被 2 整除的正整数 N 。 示例 3: 输入:3 输出:3 解释:最小的答案是 N = 111,其长度为 3。 提示: 1 <= K <= 10^5 来源:力扣(LeetCode) 链接:https://leetcode-
Michael阿明
2020/07/13
9400
LeetCode 1018. 可被 5 整除的二进制前缀
给定由若干 0 和 1 组成的数组 A。 我们定义 N_i:从 A[0] 到 A[i] 的第 i 个子数组被解释为一个二进制数(从最高有效位到最低有效位)。
Michael阿明
2020/07/13
3310
LeetCode 974. 和可被 K 整除的子数组(哈希map)
给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。
Michael阿明
2020/07/13
6140
Leetcode 1010. 总持续时间可被 60 整除的歌曲
返回其总持续时间(以秒为单位)可被 60 整除的歌曲对的数量。形式上,我们希望索引的数字 i < j 且有 (time[i] + time[j]) % 60 == 0。
zhipingChen
2020/01/02
5700
LeetCode刷题DAY 25:和可被 K 整除的子数组
给定一个整数数组A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。如输入
三猫
2020/06/02
4500
LeetCode 1010. 总持续时间可被 60 整除的歌曲(哈希)
返回其总持续时间(以秒为单位)可被 60 整除的歌曲对的数量。形式上,我们希望索引的数字 i < j 且有 (time[i] + time[j]) % 60 == 0。
Michael阿明
2020/07/13
5760
LeetCode 1010. 总持续时间可被 60 整除的歌曲(哈希)
整除的尾数_整除数
一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢?
全栈程序员站长
2022/11/15
6950
力扣刷题笔记--6220. 可被三整除的偶数的平均值
给你一个由正整数组成的整数数组 nums ,返回其中可被 3 整除的所有偶数的平均值。
C_H
2022/11/15
2320
整除的尾数(整除问题) - HDU 2099
最近在写POJ 2449,暂时还没写完,目前上卷的题目基本都涉及到了,后面会接着加强,特别是动态规划方面的题目,因为比较灵活也比较难。
ACM算法日常
2018/08/07
9280
整除的尾数(整除问题) - HDU 2099
ABC的整除问题
给定三个非负整数 A,B,C,且保证 A\le B,C\ne 0,求在区间 [A, B] 中,存在多少个整数可以被 C 整除?
浪漫主义狗
2023/03/01
2.3K0
Python中的整除
#这是浮点除法, 得到的结果是浮点数(float) var = 3/2 #得到的结果是整数1, 这是整除类似于某些编程语言的"\" var = 3//2 #这是四舍五入 var1 = round(3/2) #结果为2 var2 = round(2.8/2) #结果为1 import math var = 3/2 var = math.floor(var) #结果为1, 这个floor函数意思是取得小于等于这个数的整数
py3study
2020/01/10
1.6K0
整除计算器_0 整除
这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。
全栈程序员站长
2022/09/22
7180
python整除和取余写法_Python的整除和取余[通俗易懂]
参考:https://blog.csdn.net/sun___M/article/details/83142126
全栈程序员站长
2022/09/01
1.8K0
[每日一题]数字整除
C语言的奇葩之一就是明明可以直接除以17解决的问题偏偏要搞得这么麻烦 但我们能有什么办法呢,只能说是对思想的锻炼了呗! 题目描述 定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍。当且仅当差是17的倍数时,原数也是17的倍数 。 例如,34是17的倍数,因为3-20=-17是17的倍数;201不是17的倍数,因为20-5=15不是17的倍数。输入一个正整数n,你的任务是判断它是否是17的倍数。 输入 输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<
编程范 源代码公司
2018/04/18
1.1K0
整除个数
1、2、3… …n这n(0<n<=1000000000)个数中有多少个数可以被正整数b整除。
书童小二
2018/09/03
7190
HDOJ 2099 整除的尾数
Problem Description 一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢?
谙忆
2021/01/20
5800
基于逻辑规则的图谱推理
导读: 近年来,知识图谱在众多行业场景被大量应用,例如推荐、医疗。为了构造尽可能完备的图谱,知识图谱的推理工作也成为学术届和工业界的一个重要研究课题。来自Mila人工智能实验室的瞿锰博士,给大家分享了他们在图谱推理任务方向的一个研究:基于逻辑规则的图谱推理(RNNLogic: Learning Logic Rules for Reasoning on Knowledge Graphs),研究结果显示RNNLogic可以很好地兼顾图谱推理任务的模型效果和可解释性的问题。
DataFunTalk
2022/05/02
1.5K0
整除分块思想
对于求形如 \(\sum_{i=1}^{n}\lfloor\frac{n}{i}\rfloor\) 的值,就需要用到整除分块,否则当n很大时就会超时。在普通的一个一个的计算时可以发现很多\(\lfloor\frac{n}{i}\rfloor\)的值成块状分布,最终的到的规律是发现对于每一个值相同的块,它的最后一个数就是n/(n/i)
_DIY
2019/08/23
9300
点击加载更多

相似问题

可被2整除: Python

53

关于:a的个数可被6整除,b的数目可被8整除

16

递归法计算可被2整除的元素

120

可被2整除的数字计数器

35

生成可被2整除的随机数

50
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文