Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
yura91
30 / 26 / 2
Регистрация: 23.10.2013
Сообщений: 2,278
#1

RxJava + okHttp - Программирование Android

18.07.2016, 19:47. Просмотров 254. Ответов 0
Метки нет (Все метки)

Есть такой код в onCreate()
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final OkHttpClient client = new OkHttpClient();
        Request request =  new Request.Builder().url("your url").build();
        Observable<String> downloadObservable = Observable.create(
                sub -> {
 
                    try {
                        Response response = client.newCall(request).execute();
                        if (response.isSuccessful()) {
 
                            long tlength = response.body().contentLength();
 
                            sub.onNext("0%");
 
                        }
                    } catch (IOException e) {
                        sub.onError(e);
                    }
 
                    sub.onCompleted();
                }
        );
      
 
        Subscriber<String> mySubscriber = new Subscriber<String>() {
 
            @Override
            public void onCompleted() {
                // hide progress bar
            }
 
            @Override
            public void onError(Throwable e) {
                // hide progress bar
            }
 
            @Override
            public void onNext(String percentProgress) {
                // show percentage progress
            }
        };
 
    }
Здесь Observable делает сетевой запрос, а Subscriber может получать эти данные и выводить их на экран? Так вот Observable делает сетевой запрос в новом потоке автоматически? Там не нужно самому создавать фоновый поток? И из Observable можно к Ui обратится или это нужно делать в Subscriber?

Добавлено через 36 минут
Просто как я понял запрос сетевой обычно делают в Observable а выводят результат на экран в методах mySubscriber onCompleted() и onNext(). Чем это продиктовано? Почему нельзя и запрос и обращение к Ui( то есть делать все) прямо в Observable ?? Чем так будет плохо?

Добавлено через 2 минуты
И потом сетевой запрос нужно же делать в новом потоке. А Observable делает его в новом потоке? Почему самому не нужно создавать поток для сетевых операций внутри Observable ? Можете объяснить все эти моменты?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2016, 19:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос RxJava + okHttp (Программирование Android):

Разницы между OkHTTP AND Retrofit - Программирование Android
Добрый вечер, ребята в чем разница между Retrofit и okHTTP это код Retrofit Retrofit retrofit = new Retrofit.Builder() ...

Как OkHTTP ответ вывести в TextView? - Программирование Android
Проблема с потоками, так как не давно начал работать с android возникли непонимания. Для оправки Get запроса использую библиотеку...

RxJava вернуть данные назад - Программирование Android
Создал метод generatePlayer(String, String, ApiService) в нем использую запросы, а так же метод...

Цепь запросов rxjava + retrofit - Программирование Android
Мне нужно сделать 2 разных запроса через retrofit. Один на авторизацию а второй на получение новостей уже после авторизации(то есть есть 2...

Не могу заставить работать Retrofit + RxJava - Программирование Android
Не могу заставит работать Retrofit + RxJava. Кто может помочь? Без RxJava всё работает. Лямбды никак не могу подключить, поэтому...

Разницы между OkHTTP AND Retrofit - Программирование Android
Добрый вечер, ребята в чем разница между Retrofit и okHTTP это код Retrofit Retrofit retrofit = new Retrofit.Builder() ...

Как OkHTTP ответ вывести в TextView? - Программирование Android
Проблема с потоками, так как не давно начал работать с android возникли непонимания. Для оправки Get запроса использую библиотеку...

RxJava вернуть данные назад - Программирование Android
Создал метод generatePlayer(String, String, ApiService) в нем использую запросы, а так же метод...

Цепь запросов rxjava + retrofit - Программирование Android
Мне нужно сделать 2 разных запроса через retrofit. Один на авторизацию а второй на получение новостей уже после авторизации(то есть есть 2...

Не могу заставить работать Retrofit + RxJava - Программирование Android
Не могу заставит работать Retrofit + RxJava. Кто может помочь? Без RxJava всё работает. Лямбды никак не могу подключить, поэтому...

Разницы между OkHTTP AND Retrofit - Программирование Android
Добрый вечер, ребята в чем разница между Retrofit и okHTTP это код Retrofit Retrofit retrofit = new Retrofit.Builder() ...

Как OkHTTP ответ вывести в TextView? - Программирование Android
Проблема с потоками, так как не давно начал работать с android возникли непонимания. Для оправки Get запроса использую библиотеку...

RxJava вернуть данные назад - Программирование Android
Создал метод generatePlayer(String, String, ApiService) в нем использую запросы, а так же метод...

Разницы между OkHTTP AND Retrofit - Программирование Android
Добрый вечер, ребята в чем разница между Retrofit и okHTTP это код Retrofit Retrofit retrofit = new Retrofit.Builder() ...

Как OkHTTP ответ вывести в TextView? - Программирование Android
Проблема с потоками, так как не давно начал работать с android возникли непонимания. Для оправки Get запроса использую библиотеку...

RxJava вернуть данные назад - Программирование Android
Создал метод generatePlayer(String, String, ApiService) в нем использую запросы, а так же метод...

Цепь запросов rxjava + retrofit - Программирование Android
Мне нужно сделать 2 разных запроса через retrofit. Один на авторизацию а второй на получение новостей уже после авторизации(то есть есть 2...

Не могу заставить работать Retrofit + RxJava - Программирование Android
Не могу заставит работать Retrofit + RxJava. Кто может помочь? Без RxJava всё работает. Лямбды никак не могу подключить, поэтому...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru