是的,您可以使用 PublishSubject 将 Service 转换为使用 Observables。只需通过 subject.asObservable() 将其作为 observable 返回,并通过 subject.onNext() 从 onEvent() 方法传递新事件。使用服务绑定将您的服务绑定到活动,并且,通过绑定接口,将对您的主题的引用作为可观察对象返回。
PublishSubject<String> eventPipe = PublishSubject.create();
Observable<String> pipe = eventPipe.observeOn(Schedulers.computation()).asObservable();
// susbcribe to that source
Subscription s = pipe.subscribe(value -> Log.i(LOG_TAG, "Value received: " + value));
// give next value to source (use it from onEvent())
eventPipe.onNext("123");
// stop receiving events (when you disconnect from Service)
if (s != null && !s.isUnsubscribed()){
s.unsubscribe();
s = null;
}
// we're disconnected, nothing will be printed out
eventPipe.onNext("321");