Каждый раз когда берусь за RxJava я это забрасываю, так как не понимаю, зачем писать больше кода. Касательно Flowable
Элементарный Hello world выглядит дурно, вот так мы писали раньше
System.out.print("Hi, Rx");
А сейчас такую вот дичь в 7 строк.
Flowable.just("Hi, Rx")
.subscribe(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
Даже если использовать лямбды, зачем вообще так делать? Неужели нельзя просто написать
System.out.println("Hi, Rx");
Во-первых, не надо писать дичь в 7 строк, достаточно одной:
Flowable.just("Hi, Rx").subscribe(System.out::println);
Во-вторых, не стоит ориентироваться на Hello World. Реактивное программирование придумано для сложный вещей, в сложных вещах и блистает. Попробуйте переписать в императивном стиле что-нибудь вроде
public Observable<String> send(String command) {
return Observable.just(command)
.doOnNext(cmd -> checkConnection())
.map(cmd -> cmd.getBytes())
.map(bytes -> addHeader(bytes))
.map(bytes -> sendBytes(bytes))
.timeout(MAX_SEND_TIMEOUT_MS, TimeUnit.MILLISECONDS)
.map(result -> readAnswer())
.doOnError(throwable -> disconnect())
.retry(MAX_RETRY_COUNT)
.subscribeOn(Schedulers.io());
}
и посчитайте количество получившихся строк. Код взят из статьи "Несколько примеров практического использования RxJava". На Хабре немало статей доходчиво объясняющих назначение RxJava.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Нужно сделать правильный расчёт для построения кривой БезьеКривая не должна ложиться на компоненты, а должна огибать их