Android 将无限次调用的回调转换为可观察回调
假设我有一个回调,它将被无限次调用Android 将无限次调用的回调转换为可观察回调,android,rx-java,Android,Rx Java,假设我有一个回调,它将被无限次调用 公共接口回调{ void onPreview(字节[]数据); } 但是我需要在camera.setPreviewCallback(回调cb)中设置它 如何使用RxJava正确处理这种情况?我想从这个流异步获取数据,尤其是当我完成我的工作时。对我来说,听起来你应该有一个方法camera.getPreview(),它返回一个发出字节数组的可观察值。因此,摄像头不会回调处理程序,而是返回调用者可以订阅的可观察对象。您可以使用Observable.fromEmitt
公共接口回调{
void onPreview(字节[]数据);
}
但是我需要在camera.setPreviewCallback(回调cb)中设置它代码>
如何使用RxJava正确处理这种情况?我想从这个流异步获取数据,尤其是当我完成我的工作时。对我来说,听起来你应该有一个方法camera.getPreview()
,它返回一个发出字节数组的可观察值。因此,摄像头不会回调处理程序,而是返回调用者可以订阅的可观察对象。您可以使用Observable.fromEmitter
并从Observable.fromEmitter
的主体中设置camera.setPreviewCallback(回调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 */);
}
public void stuff(){
可观测obs=可观测。从发射器(发射器->{
回调cb=bytes->emitter.onNext(字节);
摄像头。设置预览回调(cb);
}
obs.subscribe(字节->/*使用字节*/)执行;
}
(java 8语法仅为清晰起见/ie:您可以构建匿名类而不是lambda)的可能重复