假设我有一个回调函数,它将被调用无数次
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