如何在 RxJava 2 中访问和增加“rx2.buffer-size”?

Rob*_*Tow 0 rx-android rx-java2

http://reactivex.io/RxJava/javadoc/io/reactivex/Observable中指出:

默认情况下,Observable 的运算符以 128 个元素的缓冲区大小运行(参见 Flowable.bufferSize(),可以通过系统参数 rx2.buffer-size 全局覆盖。

我的问题是,我如何访问和设置rx2.buffer-size?如果我做:

import io.reactivex.Completable;
import io.reactivex.Flowable;
import io.reactivex.Observable;
import io.reactivex.Scheduler;
import io.reactivex.Single;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.subjects.BehaviorSubject;
import io.reactivex.subjects.PublishSubject;
import io.reactivex.subjects.Subject;
import io.reactivex.*;
Run Code Online (Sandbox Code Playgroud)

...其次是:

Integer bufferSize = rx2.buffer-size;
Run Code Online (Sandbox Code Playgroud)

Studio 通知我:

  • 未使用的导入语句(for import io.reactivex.*;
  • 无法解析符号“rx2”
  • 无法解析符号“大小”

如何覆盖系统参数rx2.buffer-size

我的项目正在使用

io.reactivex.rxjava2/rxandroid/2.0.1
io.reactivex.rxjava2/rxjava/2.1.11
Run Code Online (Sandbox Code Playgroud)

sue*_*nda 5

尝试 :

Integer bufferSize = Integer.parseInt(System.getProperty("rx2.buffer-size"))
Run Code Online (Sandbox Code Playgroud)

设置新值:

System.setProperty("rx2.buffer-size", 2048)
Run Code Online (Sandbox Code Playgroud)

  • 请注意,您必须在初始化 RxJava 类之前执行此操作。 (3认同)
  • @suenda 谢谢!`Integer bufferSize = Integer.parseInt(System.getProperty("rx2.buffer-size"))` 应该改为: `Integer bufferSize = Integer.parseInt(System.getProperty("rx2.buffer-size", "42") )` 其中 `42` 是默认值;否则,如果未 _already_ 设置该属性,则将返回空值(并且会发生坏事)。此外,`2048` 需要是一个字符串,而不是一个整数:`System.setProperty("rx2.buffer-size", "2048")` (2认同)