#android #rx-java #rxjs-observables #rx-kotlin
Вопрос:
Я новичок в RxKotlin/RxJava. Я разрабатываю фоновый сервис в Android.
На моей службе у меня есть
- Разъем Bluetooth
- TCP-сокет
Всякий раз, когда данные доступны в сокете Bluetooth, считывайте и записывайте их в сокет TCP. И всякий раз, когда данные поступают в TCP-сокет, записывайте их в разъем Bluetooth.
Кто-нибудь может мне помочь:
- как добиться этого с помощью наблюдаемых объектов?
- как обмениваться информацией об идентификаторе сокета?
- как обмениваться данными? Спасибо
Комментарии:
1. Вы знаете, как все это сделать без RxJava ?
2. Мы можем достичь этого с помощью обработчика потока, управляемого, циклического, очереди сообщений. Но это огромная работа
Ответ №1:
Пожалуйста, попробуйте использовать RxSubjects (https://blog.mindorks.com/understanding-rxjava-subject-publish-replay-behavior-and-async-subject-224d663d452f)
Позвольте мне привести здесь в качестве примера объект публикации.
//a publish subject which publishes int values
public PublishSubject<Integer> source = PublishSubject.create();
source.onNext(1);
source.onNext(2);
Таким образом, приведенные выше строки кода относятся к классу сокетов Bluetooth.
Теперь в классе сокетов TCP, используя исходный код, вы можете наблюдать здесь.
source
.subscribe(
{
//result
},
{
//error
}
)
Вот и все.
Пожалуйста, убедитесь, что подписка происходит до того, как гнездо Bluetooth начнет публиковать данные.
Комментарии:
1. Большое спасибо. Теперь все ясно с передачей данных из класса Bluetooth в класс TCP. Чтобы перенести обратно другие наборы данных из класса TCP в класс Bluetooth, нам нужно создать наблюдаемый в классе TCP и наблюдатель в классе Bluetooth. Правильно ли я понимаю? Спасибо
2. ДА. Такой подход сработал бы. Также, если вы думаете, что этот ответ работает для вас, пожалуйста, примите его. Счастливое кодирование
3. Я искал пример, используя Publishsubject между классами. Не могли бы вы поделиться одним примером, если это возможно. Спасибо
4. Это что-то похожее на использование livedata внутри viewmodel и представления. Определите субъект в одном классе и получите доступ к его объекту из другого.