可以說我有這將被調用的次數轉換回調將被調用無限的次數可觀察
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 ) –