1

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

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

4

1 回答 1

3

我不认为这是可能的。

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

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

当你使用一些调度器切换到主线程时,每次它获得一个项目时,它都会将runnable添加到looper队列中,但是你可以看到runnable不会立即被调用,而是在Loopers循环结束时调用。

20ms 的时间接近于平均绘图时间(主循环器工作的频率)。

于 2017-02-16T09:33:53.440 回答