RXKOTLIN/RXJAVA:使用 Observables 的套接字之间的通信
Posted
技术标签:
【中文标题】RXKOTLIN/RXJAVA:使用 Observables 的套接字之间的通信【英文标题】:RXKOTLIN/RXJAVA: Communication between the socket using Observables 【发布时间】:2021-08-29 19:02:54 【问题描述】:我是 RXKotlin/RXJava 的新手。 我正在 android 中开发后台服务。
在我的服务中,我有
蓝牙插座 TCP 套接字只要数据在蓝牙套接字上可用,就读取和写入 TCP 套接字。并且每当在 TCP 套接字中接收到数据时,写入蓝牙套接字。
谁能帮帮我:
如何使用 Observables 实现这一点? 如何交换socket id信息? 如何交换数据? 谢谢【问题讨论】:
你知道如何在没有 rxJava 的情况下完成所有这些工作吗? 我们可以通过handlerthread、runnable、looper、消息队列来实现。但这是一项巨大的工作 【参考方案1】:请尝试使用 RxSubjects (https://blog.mindorks.com/understanding-rxjava-subject-publish-replay-behavior-and-async-subject-224d663d452f)
我这里以 PublishSubject 为例。
//a publish subject which publishes int values
public PublishSubject<Integer> source = PublishSubject.create();
source.onNext(1);
source.onNext(2);
所以上面的代码行进入蓝牙套接字类。
现在在 TCP 套接字类中,使用源,你可以在这里观察。
source
.subscribe(
//result
,
//error
)
就是这样。
请确保订阅发生在蓝牙套接字开始发布数据之前。
【讨论】:
非常感谢。现在很清楚将数据从蓝牙类传输到 TCP 类。要将另一组数据从 TCP 类传输回蓝牙类,我们需要在 TCP 类中创建 observable,在蓝牙类中创建观察者。我的理解正确吗?谢谢 是的。这种方法会奏效。另外,如果您认为此答案对您有用,请接受。快乐编码 我在班级之间使用 Publishsubject 搜索了一个示例。如果可能的话,你能分享一个例子吗?谢谢 这类似于视图模型和视图中的实时数据使用。在一个类中定义主题并从另一个类中访问其对象。以上是关于RXKOTLIN/RXJAVA:使用 Observables 的套接字之间的通信的主要内容,如果未能解决你的问题,请参考以下文章
ObservableCollection 列表找不到方法 AddRange