可以说我有这将被调用的次数转换回调将被调用无限的次数可观察
public interface Callback{ void onPreview(byte[] data); }
无限数量的回调,但我需要提前设置在camera.setPreviewCallback(Callback cb);
如何正确处理这种情况与RxJava?我想异步地从这个流中获取数据,特别是当我完成我的工作时。
可以说我有这将被调用的次数转换回调将被调用无限的次数可观察
public interface Callback{ void onPreview(byte[] data); }
无限数量的回调,但我需要提前设置在camera.setPreviewCallback(Callback cb);
如何正确处理这种情况与RxJava?我想异步地从这个流中获取数据,特别是当我完成我的工作时。
您可以使用Observable.fromEmitter
并设置camera.setPreviewCallback(Callback cb)
从Observable.fromEmitter
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语法仅用于清晰度/例如:你可以建立一个匿名类,而不是一个拉姆达)
对我来说,这听起来像你应该有一个方法camera.getPreview()
,返回一个发射字节数组的Observable。所以相机不会回调处理程序,但会返回调用者可以订阅的Observable。
可能[如何将基于Observable的基于回调的API转换为一个](http://stackoverflow.com/questions/29040346/how-to-convert-callback-based-api-into-one-based-on-observable ) –