Я хочу протестировать QR-код с определенным форматом в приложении Android
, используя RxJava
. Мне нужно проверить QR-код на несколько условий, и если это правда, мне нужно будет прекратить дальнейшую проверку и реагировать на них, например. покажите сообщение об ошибке в пользовательском интерфейсе, что QR-код недействителен.RxJava фильтр и реагировать на события?
Я читал, что использование Observable.error
не рекомендуется, так как оно должно использоваться только для экстремальных событий, но события, которые я фильтрую, не являются экстремальными, но можно ожидать, например. QR-код, который был отсканирован, не был создан для моего приложения или данные, содержащиеся в QR-коде, являются недействительными. В противном случае я бы подумал о чем-то вроде этого:
Observable.just(barcode)
.doOnNext(new Action1<Barcode>() {
@Override
public void call(Barcode barcode) {
if(barcode.rawValue == null) {
throw new RuntimeException("empty");
}
if(barcode.rawValue == null) {
throw new RuntimeException("empty");
}
}
})
.onErrorResumeNext(new Func1<Throwable, Observable<? extends Barcode>>() {
@Override
public Observable<? extends Barcode> call(Throwable throwable) {
//do something here
}
})
.subscribe(new Subscriber<Barcode>() {
//update UI to show result
});
Что бы хорошая практика, чтобы проверить мой штрих-код для данных, не посылая поток в onError()
?