当前位置: 首页 > 知识库问答 >
问题:

在RxJava 2中,如何使一个Observable发出另一个Observable发出的组合项?

万俟心思
2023-03-14

我有一个发出随机位/布尔值的可观察对象。我需要制作另一个可观察对象,它结合这些随机位来创建和发出随机整数。每次底层的可观察对象发出一个位时,这个可观察对象都会将该位附加到一个位字符串中,一旦该位字符串达到特定长度,这个可观察对象会将其转换为一个整数并发出它。

下面是我如何使用Android LiveData实现它的:

final StringBuilder bitStringBuilder = new StringBuilder();
final MediatorLiveData<Integer> integerLiveData = new MediatorLiveData<>();
integerLiveData.addSource(
        randomSource.getBooleanLiveData(),
        new Observer<Boolean>() {
            @Override
            public void onChanged(Boolean b) {
                bitStringBuilder.append(b ? '1' : '0');
                if (bitStringBuilder.length() == 31) {
                    integerLiveData.setValue(Integer.parseInt(bitStringBuilder.toString(), 2));
                    bitStringBuilder.setLength(0); // clear the bit string builder
                }
            }
        }
);

如何使用RxJava 2实现这一点?

共有1个答案

燕宏胜
2023-03-14

缓冲位:

source
.buffer(31)
.map(bits -> {
    int result = 0;
    for (int b : bits) {
        result = (result << 1) | (b ? 1 : 0);
    }
    return result;
})
 类似资料:
  • 我正在学习使用RxAndroid库的RxJava,同时使用改型来进行联网,并使用RetroLambda来使用Java8 lambdas。 我希望构建的应用程序具有以下功能: 允许用户键入对Wikipedia API的查询 我让它像这样工作: 现在,我想添加一个新的小部件,允许我的维基百科查询使用另一种语言。现在,我将选择一个开关,以“en”或“nl”作为维基百科url的前缀。 所以我从开关中创建了

  • 在我们的第一个列子里,我们将检索安装的应用列表并填充RecycleView的item来展示它们。我们也设想一个下拉刷新的功能和一个进度条来告知用户当前任务正在执行。 首先,我们创建Observable。我们需要一个函数来检索安装的应用程序列表并把它提供给我们的观察者。我们一个接一个的发射这些应用程序数据,将它们分组到一个单独的列表中,以此来展示响应式方法的灵活性。 private Observab

  • 如何在JMETER中创建一个测试,该测试将: 总共提出100个请求,但是使 每4次请求站点A和 每5次请求站点B

  • Observable.of(1, 2, 3).subscribe( doSomething, reject, resolve); }); The forEach pattern is useful for a sequence of events you only expect to happen once. export class MyApp { private d

  • 我在一个表单中有两个组合框。 当combobox 2中的列表更新时,我希望combobox 1中选定的值发生变化。 例如:ComboBox1 包含移动公司的名称,ComboBox2 包含该公司所有移动电话的列表。

  • 一个用户使用OkHTTP3后如何发送requset?我必须这样做:1)我使用方法发送request1,到服务器;2)服务器用COOKIE发送request1的响应;3)我保存这个COOKIE;4)我用保存的COOKIE发送request2。 我在第4步有个问题。看起来,request2在request1之后发送,在request1保存他的cookie之前。如何化解?我想在请求保存自己的cookie