背压有问题。使用发布主题在发出时获取传感器事件,并且需要在事务中订阅主题时将数据保存到数据库。
我一直在尝试使用 .window(100) 运算符,因此每当我连续获得 100 个传感器事件时,我都可以批量插入,但我只能在 .subscribe() 获得一项
不想通过使用缓冲区运算符来删除事件。处理这个问题的正确方法是什么?
@Override
public void onSensorChanged(SensorEvent sevent) {
Sensor sensor = sevent.sensor;
switch (sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
sensorEventPublishSubject.onNext(sevent);
break;
}
}
sensorEventPublishSubject
.map(event ->
new AccModel(
event.values[0],
event.values[1],
event.values[2],
event.accuracy
)
)
.window(100)
.subscribe(
new Action1<Observable<AccModel>>() {
@Override
public void call(Observable<AccModel> accModelObservable) {
//insert in db
}
}
);