调用PublishSubject.onNext()和接收它之间的Rx间隔很长

时间:2017-02-16 09:14:01

标签: android rx-java behaviorsubject

在后台线程中,我调用PublishSubject.onNext();,在主线程中通过subscribe(PublishSubject.filter(message -> message.getId() == id), this::onMessageInserted);我收到它。平均持续时间约为20毫秒。有没有办法减少这个时间?

我们用 'io.reactivex:rxjava:1.2.5' 'io.reactivex:rxandroid:1.2.1'

1 个答案:

答案 0 :(得分:3)

我不认为这是可能的。

主要问题是,使用主循环器将项目从后台传递到主线程。

它执行所有系统操作,例如布局,绘图,调用生命周期方法,并且在looper完成所有操作后,它会运行添加到其队列中的操作。

当你使用一些调度程序切换到主线程时,每次获取一个项目时它都会向looper队列添加runnable,但正如你所看到的那样,runnable不会被立即调用,而是在Loopers循环结束时。

时间20ms接近平均绘图时间(主弯道的工作频率)。