【问题标题】:Rx Interval between calling PublishSubject.onNext() and receiving it is long调用 PublishSubject.onNext() 和接收它之间的 Rx 间隔很长
【发布时间】:2017-02-16 09:14:00
【问题描述】:
在后台线程中我调用PublishSubject.onNext(); 并在主线程中通过subscribe(PublishSubject.filter(message -> message.getId() == id), this::onMessageInserted); 我收到它。平均持续时间约为 20 毫秒。有没有办法减少这个时间?
我们使用
'io.reactivex:rxjava:1.2.5'
'io.reactivex:rxandroid:1.2.1'
【问题讨论】:
标签:
android
rx-java
behaviorsubject
【解决方案1】:
我认为这是不可能的。
主要问题是使用主循环器从后台向主线程传递项目。
它执行所有系统操作,例如布局、绘图、调用生命周期方法,并且在 Looper 完成所有这些操作后,它会运行添加到其队列中的操作。
当你使用一些调度器切换到主线程时,每次它得到一个项目时都会将runnable添加到looper队列中,但是你可以看到runnable不会立即被调用,而是在Loopers循环结束时调用。
20ms的时间接近于平均绘制时间(主looper工作的频率)。