私は誰かが購読しているかどうかにかかわらず、アイテムを放出する特定の機能を持っています。また、この機能は一度だけ実行されなければならないと誰かがそれに加入するかどうかはどのようにしてobservableを作成するには?
Observable<CharSequence> observable = Observable.create(subscriber -> {
try {
sseEventSource.connect(); //this should be called once when created;
final SseEventReader sseEventReader = sseEventSource.getEventReader();
SseEventType type = sseEventReader.next();
while (type != SseEventType.EOS) {
if (type != null && type.equals(SseEventType.DATA) && sseEventReader.getData() != null) {
CharSequence data = sseEventReader.getData();
if (!subscriber.isUnsubscribed()) {
subscriber.onNext(data);
}
}
type = sseEventReader.next();
}
sseEventSource.close();
Log.d("SseService", "closed");
if (!subscriber.isUnsubscribed()) {
subscriber.onCompleted();
}
} catch (URISyntaxException | IOException e) {
if (!subscriber.isUnsubscribed()) {
subscriber.onError(e);
}
}
私はこのconnect()などのものはIOスレッド内で実行する必要があることを忘れています。 –
それでIOスレッドで実行してください – Divers
誰も購読していなくてもアイテムを出すHot observableを作成する方法はありますか?このコードはすべて、1つのスレッドで同時に実行する必要があります。あなたは、私がrxチェーンの中でそれの一部を演奏し、他のどこかの詩を欲しいと思っています。 –