在后台线程中,我调用PublishSubject.onNext();
,在主线程中通过subscribe(PublishSubject.filter(message -> message.getId() == id), this::onMessageInserted);
我收到它。平均持续时间约为20毫秒。有没有办法减少这个时间?
'io.reactivex:rxjava:1.2.5'
'io.reactivex:rxandroid:1.2.1'
答案 0 :(得分:3)
我不认为这是可能的。
主要问题是,使用主循环器将项目从后台传递到主线程。
它执行所有系统操作,例如布局,绘图,调用生命周期方法,并且在looper完成所有操作后,它会运行添加到其队列中的操作。
当你使用一些调度程序切换到主线程时,每次获取一个项目时它都会向looper队列添加runnable,但正如你所看到的那样,runnable不会被立即调用,而是在Loopers循环结束时。
时间20ms接近平均绘图时间(主弯道的工作频率)。