将被无限次调用的回调转换为可观察对象



假设我有一个回调函数,它将被调用无数次

public interface Callback{ void onPreview(byte[] data); }

但是我需要在camera.setPreviewCallback(Callback cb);

中更早地设置它

如何正确处理这种情况与RxJava?我想从这个流异步获取数据,特别是当我完成我的工作。

您可以使用Observable.fromEmitter,并从Observable.fromEmitter的主体设置camera.setPreviewCallback(Callback cb)

 public void stuff() {
       Observable<Byte[]> obs = Observable.fromEmitter(emitter -> {
              Callback cb = bytes -> emitter.onNext(bytes);
              camera.setPreviewCallback(cb);
       }
       obs.subscribe(bytes -> /* perform with bytes */);
 }

(java 8语法仅用于清晰度/即:您可以构建一个匿名类而不是lambda)

对我来说,这听起来像是你应该有一个方法camera.getPreview(),它返回一个发出字节数组的Observable。所以camera不会回调handler,而是返回一个调用者可以订阅的Observable

相关内容

  • 没有找到相关文章

最新更新