Как грамотно отправить 2-3 запроса android

157
09 июня 2018, 10:30

Стоит задача, отправить пару запросов, получить с этих запросов данные, обработать их (данные из 2-3 запросов) и отправить в адаптер( например)

Каким образом это правильно и красиво сделать? Насколько я знаю, для таких задач используется RxJava, хотелось бы чтобы привели пример правильного решение с использованием Rx и без использование Rx.

Answer 1

Если вам нужно соеденить ответы этих запросов то вполне подойдет оператор concat Вот небольшая демонстрация

 final String[] aStrings = {"A1", "A2", "A3", "A4"};
        final String[] bStrings = {"B1", "B2", "B3"};
        final Observable<String> aObservable = Observable.fromArray(aStrings);
        final Observable<String> bObservable = Observable.fromArray(bStrings);
        Observable.concat(aObservable, bObservable)
                .subscribe(getObserver());

На выходе получим поток данных спрерва "A1", "A2", "A3", "A4" а затем "B1", "B2", "B3"

Так же можно использовать оператор merge

 Observable.merge(aObservable, bObservable)
                .subscribe(getObserver());

тогда на выходе получим поток данных

"A1", "B1", "A2", "A3", "A4", "B2", "B3"

или же zip

Observable<String> stringObservable1 = Observable.just("Hello", "World");
Observable<String> stringObservable2 = Observable.just("Bye", "Friends");
Observable.zip(stringObservable1, stringObservable2, new BiFunction<String, String, String>() {
    @Override
    public String apply(@NonNull String s, @NonNull String s2) throws Exception {
        return s + " - " + s2;
    }
}).subscribe(new Consumer<String>() {
    @Override
    public void accept(String s) throws Exception {
        System.out.println(s);
    }
});

на выход получим

Hello - Bye
World - Friends

Я б не стал писать это чисто андроид потоками ибо это ресурсаемко советую использовать rxJava.

READ ALSO
Не отображается иконка приложения

Не отображается иконка приложения

указал в манифесте путь к новой иконке приложения: android:icon="@drawable/icon" Затем сгенерировал апк и установил на другое устройство, но там иконка...

139
Как создать обертку двух разных классов с одинаковыми полями?

Как создать обертку двух разных классов с одинаковыми полями?

Пишу окно, в котором постоянно должны двигаться круги\квадратыПоказываются только круги\квадраты, но в этом время другие фигуры двигаются

206
Ошибка при старте сервера jboss &ldquo;Could not make local copy for file&hellip;&rdquo;

Ошибка при старте сервера jboss “Could not make local copy for file…”

При запуске сервера jBoss вылетает ошибка:

158
Server on node.js + android client + json file

Server on node.js + android client + json file

Есть RESTful API на Nodejs который работает с json файлом

162