Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 20 май 2018, 18:31

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: 13 июл 2017, 22:12 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1387
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.

Иногда я в чужом коде встречаю использование just, чтобы вызвать какой-либо метод, используя RxJava. В этом посте я хотел бы рассказать, почему не стоит так делать, и показать правильный вариант реализации.




Click here to read this article!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Последний раз редактировалось damager82 12 янв 2018, 15:37, всего редактировалось 10 раз(а).

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 авг 2017, 13:44 
Аватар пользователя

Зарегистрирован: 02 авг 2017, 13:41
Сообщений: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Отличный материал. Спасибо :mrgreen:


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 04 авг 2017, 01:13 

Зарегистрирован: 25 янв 2015, 18:57
Сообщений: 42
Благодарил (а): 9 раз.
Поблагодарили: 2 раз.
damager82 писал(а):
Иногда я в чужом коде встречаю использование just, чтобы вызвать какой-либо метод, используя RxJava. В этом посте я хотел бы рассказать, почему не стоит так делать, и показать правильный вариант реализации.


Click here to read this article!


Скажите пожалуйста, а почему все-таки just не выполняется в щедулере, который мы указываем в subscribeOn()? Просто я думал, что независимо от того, где находится subscribeOn, все начинает выполняться в другом потоке (RxIoScheduler-2 в данном случае)

P.S. хорошо бы указать в данном посте, что fromCallable() внутри себя использует try/catch, чтобы было понятнее, почему именно нет проблемы при использовании его, а не just, т.е. вот примерная реализация его:
try {
subscriber.onNext(longAction("5"));
subscriber.onCompleted();
} catch (Exception e) {
subscriber.onError(e);
}
:)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 авг 2017, 20:45 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1387
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
danek130995 писал(а):
damager82 писал(а):
Иногда я в чужом коде встречаю использование just, чтобы вызвать какой-либо метод, используя RxJava. В этом посте я хотел бы рассказать, почему не стоит так делать, и показать правильный вариант реализации.


Click here to read this article!


Скажите пожалуйста, а почему все-таки just не выполняется в щедулере, который мы указываем в subscribeOn()? Просто я думал, что независимо от того, где находится subscribeOn, все начинает выполняться в другом потоке (RxIoScheduler-2 в данном случае)

P.S. хорошо бы указать в данном посте, что fromCallable() внутри себя использует try/catch, чтобы было понятнее, почему именно нет проблемы при использовании его, а не just, т.е. вот примерная реализация его:
try {
subscriber.onNext(longAction("5"));
subscriber.onCompleted();
} catch (Exception e) {
subscriber.onError(e);
}
:)


Мы при создании Observable явно вызываем метод Observable.just в UI потоке. И если мы передаем туда не значение, а метод, то этот метод должен будет выполниться сразу же, чтобы получить значение, передать его в just и продолжить идти по цепочке методов создания Observable. Т.е. то, что внутри just - выполняется при создании Observable. Потому что Observable нужно сразу знать значение.

А при fromCallable у нас получается что-то типа функционального программирования. Мы передаем в Observable функцию. И эта функция будет вызвана уже где то внутри Observable при старте. Т.е. нет необходимости вызывать Callable при создании Observable, чтобы получить значение. Observable согласен принять функцию, которую он потом сам может выполнить в указанном шедулере и получить значение. Получается что-то типа отложенного вызова.

Как-то так)

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 мар 2018, 23:08 

Зарегистрирован: 31 янв 2018, 12:23
Сообщений: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравствуйте.
В зависимостях у Вас указана 2-я версия Rx, а в примере используется Action1 вместо Consumer. Это просто опечатка?)


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB