在我使用下面的代码来阅读并发送此日期白色处理程序之前 代码读取二进制文件分配8 * 12 * 1002字节即信号数据(包含 12 * 1002双倍值)
我如何使用rx_java2来读取此文件和流 循环,同步每1002双同步到12个观察者,每2 ms发布一次延迟的双值
INotifyPropertyChanged
答案 0 :(得分:0)
您可以尝试通过创建每个concat
来进行Observable
操作,或者如图所示从Observable.fromIterator()
中创建内容。请注意,当您执行此操作以及必须在下游处理错误时,错误处理将变得很棘手。最好使用Flowable
,因为如果要在其中一个失败的情况下继续使用下一个数组,则可以使用BackPressureStrategy
来定义onErrorResumeNext
。
public class ReadBinaryDate extends Thread {
final ArrayList<Observable<double[]>> doubleObservables = new ArrayList<>();
private Observable<double[]> generateObservable (final double [] array1002) {
return Observable.interval(2, TimeUnit.MILLISECONDS)
.flatMap(new Function<Long, ObservableSource<double[]>>() {
@Override
public ObservableSource<double[]> apply(Long aLong) throws Exception {
return Observable.just(array1002);
}
});
}
private void generateData() {
arrayList.clear();
for (int n = 0; n < 12; n++) {
double[] yb = new double[1002];
buf.get(yb, n*1002, (n+1)*1002);
doubleObservables.add(generateObservable(yb));
}
}
private void subscribeStream() {
Observable.fromIterable(doubleObservables)
.subscribe(new Observer<Observable<double[]>>() {
@Override
public void onSubscribe(Disposable d) { }
@Override
public void onNext(Observable<double[]> observable) {
// do on each array
}
@Override
public void onError(Throwable e) {
// handle error
}
@Override
public void onComplete() {
// do on complete
}
});
}
}