gpt4 book ai didi

java - 将异步计算的数据传播回 GUI 线程

转载 作者:行者123 更新时间:2023-12-01 08:53:32 26 4
gpt4 key购买 nike

我实现了一项服务,该服务可以从眼球追踪器异步获取数据,并提供一个 PublishSubject,任何感兴趣的人都可以订阅该主题以获取最新的眼球追踪事件流。

我不知道如何将这些事件放入我的 GUI 线程中(因为如果没有显示内容的信息,眼球追踪几乎毫无用处)以及如何充分限制接收到的事件,以便 GUI 不会因为以下原因而滞后阻塞线程。

有人可以给我一些关于如何使用 RxJava 做到这一点的提示吗?

最佳答案

响应式(Reactive)扩展提供了一种称为调度程序的东西。它们指示流更改它们在其上生成或观察项目的线程。您可以通过运算符 subscribeOn 设置它们,它会修改流,以便生产者发出其项目(换句话说,在其订阅者上调用 onNext 方法),或者通过名为observeOn 告诉流在指定的调度程序上安排其观察工作。

getSomeObservable() // Observable does its work on computation scheduler
.observeOn(Schedulers.io()) // instructs to switch every afterwards operator to observe items on io scheduler
.map(...) // this callback is called on a thread provided by io scheduler
.filter(...) // and this as well
.observeOn(Schedulers.newThread()) // switch to new thread scheduler
.doOnNext() // new thread
.subscribeOn(Schedulers.computation()) // instructs to produce items on computational scheduler
.subscribe(...) // still scheduling this task to new thread scheduler

通常,对 rx 有一定程度支持的框架都有一些在 UI 线程上执行工作的 Scheduler 实现...例如,Android 有一个提供 AndroidSchedulers.mainThread() 的库,这正是您所需要的正在寻找,只在你的框架中

关于java - 将异步计算的数据传播回 GUI 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42208697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com