Тёмный

RxJava - Transformation, Filter. Полный обзор. Часть 2 [RU, Android] / Мобильный разработчик 

Mobile Developer
Подписаться 51 тыс.
Просмотров 18 тыс.
50% 1

Всем привет. Наконец-таки я подошел к обзору одной из самых сложных библиотек для Андроид. Видео будет в нескольких частях, поэтому если вы что-то не увидели здесь - оно будет в следующих выпусках.
Мобильный разработчик в других соц. сетях
=======================
Вконтакте - mdeveloper
Instagram - / nplau
=======================
Наши друзья и информационные партнеры:
t.me/androidev - Телеграмм канал, посвященный разработке для Андроид!
Стать Патроном канала и получить доступ к уникальному материалу
/ mobiledeveloper
Поддержать канал рублем:
PayPal - alexgladkov@icloud.com
Mastercard - 5536 9137 9985 0652
Полезные ссылки
=======================
RxJava. 1 Часть. - • RxJava - Observable, F...
Dagger 2 - • Dagger 2 - @Provides, ...
Moxy - • Moxy - View, Presenter...
Ставь лайк, подписывайся и пиши, чтобы ты хотел увидеть в следующих видео.

Опубликовано:

 

27 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 121   
@momentslikethis8014
@momentslikethis8014 5 лет назад
самаые адекватные уроки на ютубе продолжай бро) Jetpack разбери пожалуйста
@MobileDeveloper
@MobileDeveloper 5 лет назад
Спасибо большое, окей записал!
@didaray8854
@didaray8854 3 года назад
00:18:16 - практика Transforming 1 (map, flatMap, switchMap, contactMap) 00:32:34 - теория Transforming 2 (buffer, groupBy, scan) 00:34:45 - практика Transforming 2 (buffer, groupBy, scan) 00:49:45 - теория Filtering (debounce, distinct, elementAt, filter, ignoreElements, sample, skip, skipLast, take, takeLast) 01:00:21 - практика Filtering (debounce, distinct, elementAt, filter, ignoreElements, sample, skip, skipLast, take, takeLast)
@namesecondname7863
@namesecondname7863 5 лет назад
Огромное спасибо за выпуски! Не останавливайтесь!)
@MobileDeveloper
@MobileDeveloper 5 лет назад
Спасибо ) не планирую останавливаться ))
@kafychannel
@kafychannel 2 года назад
Привет, Алексей . Спасибо за видео по андроид. Давно смотрю вас и как - то уютно становится от просмотра ваших видео - уроков. Особенно песня в начале видео 0:15 просто великолепна. Помню, я писал вам около года назад, чтобы найти эту музыку, вам написал её друг и вы скидывали ссылку на icloud , если мне не изменяет память))
@MobileDeveloper
@MobileDeveloper 2 года назад
Спасибо)
@MishaAkopov
@MishaAkopov 4 года назад
Хотя я почти всё знал, есть чувство что етот видос был очень полезен, так держать! Правда очень качественно всё расказанно. Под каждым видосом 1 лайк мой :)
@MobileDeveloper
@MobileDeveloper 4 года назад
Спасибо!
@EugeneVoronoy
@EugeneVoronoy Год назад
Спасибо!
@nikolyababa1215
@nikolyababa1215 3 года назад
Спасибо, добрый человек!
@MobileDeveloper
@MobileDeveloper 3 года назад
Пожалуйста )
@serggio88888
@serggio88888 4 года назад
Алексей, респект тебе. Былибы деньги - дал бы)
@MobileDeveloper
@MobileDeveloper 4 года назад
Спасибо ) вы можете поддержать канал и другим способом. Просто разместите понравившееся видео у себя в соц сетях это будет огромная помощь
@maxsimpleapps
@maxsimpleapps 4 года назад
Годнота! Алексей, не хватает фирменных камешковых rx диаграм. С помощью них ты бы гораздо лучше смог подать материал 👍🏻 Но и сейчас всё очень хорошо. Грокаю реактивщину с помощью книги "Реактивное программирование с применением RxJava", параллельно с ней твои видео очень хорошо заходят. Спасибо!
@MobileDeveloper
@MobileDeveloper 4 года назад
Спасибо большое!)
@podo_x2
@podo_x2 5 лет назад
1:09:00 зажав alt можно выделять строки по вертикали)
@MobileDeveloper
@MobileDeveloper 5 лет назад
Спасибо, воспользуюсь )
@МобильныйРазработчик-ъ3с
thank you so much !
@awkwardquestion8643
@awkwardquestion8643 4 года назад
Некоторые операторы есть в самом нативном котлине (да и джаве 8 вроде бы тоже), если кто-то еще не знает. Тот же мап очень помогает экомить код при работе с коллекциями, как и фильтр
@oooelesta1093
@oooelesta1093 3 года назад
Спасибо большое за отличные уроки!!! Просто лучший
@MobileDeveloper
@MobileDeveloper 3 года назад
Пожалуйста )
@n.konshin
@n.konshin 2 года назад
Всё круто, но с map ошибка в видео 19:35, мы можем возвращать другой тип, например с маппить ДТОшки в Домейн и тд)
@MobileDeveloper
@MobileDeveloper 2 года назад
Имелось ввиду, что мы не можем маппить сингл в обсервабл
@n.konshin
@n.konshin 2 года назад
@@MobileDeveloper возможно я что то не понял, сложилось впечатление, что имеется ввиду, что тип может быть только тот, что и поступил на вход ( но не важно, это мелочи, спасибо за контент, очень помогает узнать новое, и повспоминать старое)
@Mr7Pantera7
@Mr7Pantera7 5 месяцев назад
@@n.konshin да нет, именно его слова вы правильно поняли, он говорит что если на входе стринг, на выходе инт не может получится, тоже удивился
@pavelsumin4678
@pavelsumin4678 5 лет назад
Спасибо за видео! Часть 3 будет по объединению потоков данных (zip, concat ...)?
@MobileDeveloper
@MobileDeveloper 5 лет назад
Да про это и ещё там про разные штуки
@ЮрійБережний-с7ъ
@ЮрійБережний-с7ъ 4 года назад
Здравствуйте, Алексей. Расскажите пожалуйста про Handler, Looper и MessageQueqe
@MobileDeveloper
@MobileDeveloper 3 года назад
Была такая мысль, но все не успеваю.
@СергейПанов-з3ц
@СергейПанов-з3ц 4 года назад
Создавать observable оператором just, а потом писать SubscribeOn... ObserveOn... не имеет никакого смысла, так как всё выполнится в потоке в котором выполнится subscribe. 3 часть не смотрел, но надеюсь Вы там затронете тему того не все операторы создания observable поддерживают распараллеливание потоков.
@MobileDeveloper
@MobileDeveloper 4 года назад
К сожалению, дальше я эту тему не затрагивал, а надо было бы, наверное. Насчёт just да все верно, не помню уже почему я там так написал.
@s.a.3408
@s.a.3408 4 года назад
Мне кажется, проще делать так, чем юзать метод add(): composeBag += Observable.just(...)...
@MobileDeveloper
@MobileDeveloper 4 года назад
Да вы правы )
@s.a.3408
@s.a.3408 4 года назад
@@MobileDeveloper ух ты, круто! Мало того что очень классный материал, ещё и обратная связь есть) Спасибо, MD!!!
@MobileDeveloper
@MobileDeveloper 4 года назад
👌👍
@preenxus3425
@preenxus3425 5 лет назад
Настройте удаление строки по shift+delete, это спасает кучу времени. По шагам: Идем в менеджер шорткатов (Setting -> Keymap), ищем там delete line, задаем горячую клавишу shift+delete - готово. Почти, она будет занята, просто переопределите.
@MobileDeveloper
@MobileDeveloper 5 лет назад
Спасибо большое! Настрою
@TalgatTR
@TalgatTR 5 лет назад
Хороший канал, мне нравится
@TalgatTR
@TalgatTR 5 лет назад
Нажал колокольчик
@MobileDeveloper
@MobileDeveloper 5 лет назад
Спасибо большое!)
@schnaps1981
@schnaps1981 5 лет назад
Больше уроков по Rx! а в чем плюсы котлина в отличие от жавы?
@MobileDeveloper
@MobileDeveloper 5 лет назад
Там масса фишек, когда-нибудь сделаю видео на эту тему
@Andrey-pu1lv
@Andrey-pu1lv 5 лет назад
Спасибо за видео) побольше подписчиков тебе)
@MobileDeveloper
@MobileDeveloper 5 лет назад
Спасибо большое, да было бы неплохо ))
@Andrey-pu1lv
@Andrey-pu1lv 5 лет назад
@@MobileDeveloper , немного не по теме вопрос. Я не могу получить данные с помощью retrrofit, rxjava. Когда пишу другой запрос и все остальное остается одинаковым ответ приходит. И еще, когда я использую библиотеку Volley все работает. HTTP FAILED: java.net.SocketTimeoutException: timeout
@MobileDeveloper
@MobileDeveloper 5 лет назад
Используй логгирование в okhttp клиенте посмотри что уходит и что приходит я думаю сразу поймёшь в чем дело
@Andrey-pu1lv
@Andrey-pu1lv 5 лет назад
после добавления двух заголовков проблема исчезла
@ruborus
@ruborus 5 лет назад
спасибо за урок. У меня один вопрос․ Если я использую Single имеет смысл вызвать dispose в onDestroy ?
@MobileDeveloper
@MobileDeveloper 5 лет назад
Да имеет смысл потому что в момент запроса внезапно может быть вызван onDestroy
@НикитаЯворский-д2ю
hashCode не интересует distinct, только equals там играет роль
@MobileDeveloper
@MobileDeveloper 3 года назад
Я уже плохо помню, что я там сказал )
@ГеоргийГ-р2н
@ГеоргийГ-р2н 4 года назад
Если не сложно, объясните пожалуйста почему данные от текст вью не попадали в онсабскрайб, все из за того что созданный источник уже на main thread и его не возможно перевести на другой поток или почему то еще? я не особо понял. За уроки спасибо, отличные краткие выжимки из огромных тем прям то что нужно чтобы заполнить пробелы в знаниях
@MobileDeveloper
@MobileDeveloper 4 года назад
Спасибо ) а можете таймметку сказать?
@ГеоргийГ-р2н
@ГеоргийГ-р2н 4 года назад
@@MobileDeveloper ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-Z0vB_TlvJJ4.html
@николай-пасюк
@николай-пасюк 4 года назад
если не вызывать dispose() в onDestroy(), что произойдет тогда с Disposable после уничтожения Activity?
@MobileDeveloper
@MobileDeveloper 4 года назад
Интересный вопрос ) по идее ничего не произойдёт ) но зависит от того что у вас в ветках находится
@alexpetrov6700
@alexpetrov6700 5 лет назад
48:41 не очень понятно как fromArray сделать. Попробовал, scan не работает тогда, подчеркивает красным. Много чего перепробовал но так и не понял как решить данную проблему((
@MobileDeveloper
@MobileDeveloper 5 лет назад
С array я помню тоже возился, а вы не пробовали в лист собрать observable?
@steven.3182
@steven.3182 5 лет назад
Норм
@MobileDeveloper
@MobileDeveloper 5 лет назад
Спасибо! )
@OverNoobDmg
@OverNoobDmg 5 лет назад
Круто подаешь материал. Вопрос возник как лучше делать в ситуации, когда нужно запросить данные и для каждого элемента данных запросить еще определенные данные? Ниже привожу, как получилось у меня, но как будто что то не то. public Single getAll() { return mProgramRepository.getAll().map(programs -> { mProgramTemplateInteractor.getAll().subscribe(programTemplates -> { for (Program program : programs) { ProgramTemplate programTemplate = ProgramTemplate.find(program.getTemplateId(), programTemplates); program.setProgramTemplate(programTemplate); } }); return programs; }); }
@MobileDeveloper
@MobileDeveloper 5 лет назад
Спасибо! Используйте оператор zipWith
@АлександрТарасюк-г1ц
зачем в котлине RX, если есть корутины?
@MobileDeveloper
@MobileDeveloper 5 лет назад
Хороший вопрос, ну могу сказать здесь следующее. 1) Очень много проектов до. сих пор работают на. Java 2) Очень много проектов были написаны с использованием RX и это все надо поддерживать. 3) Вопрос вкуса.
@sfiirwuejnn
@sfiirwuejnn 5 лет назад
@@MobileDeveloper А то что корутины ещё сырые (т.е. не могут тоже что и rxjava) это правда или нет?
@MobileDeveloper
@MobileDeveloper 5 лет назад
Ну они в релизе насколько я помню. Корутины более легковесны а программисты зачастую даже 5% возможностей RX не юзают
@sexol1235
@sexol1235 5 лет назад
Насколько знаю Rx зародился в недрах Netflix и майкрософт для работы с большим потоком данных. Следовательно если использовать Rx то уже во всем приложении или не юзать вообще. К тому же библиотека доступна на многих языках, чего не сказать про корутины. Корутины могут взаимодействовать с Rx
@MobileDeveloper
@MobileDeveloper 5 лет назад
Это в любом случае инструмент. И то инструмент и то инструмент. Как удобно так и надо использовать. Очень часто функционала корутин вполне достаточно.
@FessNiklas1987
@FessNiklas1987 4 года назад
Transformation, filter - 80мин???? Часть 2??????? Или видео названо не правильно, или это такая вода.... Мой диплом отдыхает
@MobileDeveloper
@MobileDeveloper 4 года назад
Хоспади да вам не угодишь. Одному слишком короткое видео другому слишком длинное. Да не нравится не смотрите. Я вас сюда силой что ли тащу?
@АрсланЦой-ш2м
@АрсланЦой-ш2м 5 лет назад
Очень круто объясняешь тяжелые вещи) Хотелось бы посмотреть уроки по чистой архитектуре от тебя.
@MobileDeveloper
@MobileDeveloper 5 лет назад
Спасибо ) да архитектура тоже будет ))
@preenxus3425
@preenxus3425 5 лет назад
плюс. очень хочется это послушать. там куча нюансов.
@ДмитрийБусыгин-с3ф
Спасибо!
@MobileDeveloper
@MobileDeveloper 3 года назад
Пожалуйста )
@preenxus3425
@preenxus3425 5 лет назад
39:39 никакой магии, я все также делаю)) а то многие корчат из себя гениев, будто они все с первого раза понимают и кодят без ошибок
@MobileDeveloper
@MobileDeveloper 5 лет назад
Да я стараюсь показывать и моменты где не получается )
@jojomajo
@jojomajo 4 года назад
Я вот что думаю такой полезный канал, столько ценной информации для разработчиков и так мало подписчиков. И я знаю почему так, это не потому что информация какая-то не та или ещё что-то. Это потому что многие даже не догадываются о существовании это канала даже не имеют понятия что есть канал на котором они найдут почти все что ищут. Я сам на самом деле с трудом нашел тебя, притом что запросы по android kotlin и тд достаточно давно отправляю и ютуб очень долго не давал вообще какого-либо намека что такой канал есть. Вот в чем прикол, очень очень много людей не могут найти этот канал в принципе( Я думаю что тут без какого-либо вмешательства из вне не обойтись, тут имеется ввиду что нужно распространять информацию о канале, даже в комментариях общаетесь, где то пишите что есть такой канал, чтобы люди могли знать что есть такой клад информации) И думаю что небольшая рекламная интеграция тоже не помешает, возможно на хабре статейку стоит запилить или что-то вроде этого (возможно она уже есть а я и не знаю((
@MobileDeveloper
@MobileDeveloper 4 года назад
Да, наверное. Я особо не парюсь на счёт распространения. Но если вы поделитесь каналом я буду очень благодарен )
@jojomajo
@jojomajo 4 года назад
@@MobileDeveloper пиарю везде где только можно)
@MobileDeveloper
@MobileDeveloper 4 года назад
Спасибо большое ))
@sexol1235
@sexol1235 5 лет назад
Думаю во время объяснения, вместо фона логичнее демонстрировать что то , те же диаграммы из документации вполне подойдут. В остальном все хорошо.
@MobileDeveloper
@MobileDeveloper 5 лет назад
Я понимаю это желание, но это существенно увеличит время монтажа. А я хотел бы больше времени посвятить видео
@MaksudTV
@MaksudTV 2 года назад
Что за музыка играет на фоне?
@michaelk268
@michaelk268 4 года назад
Крутое видео! Есть еще такая сущность Subject и ее реализация BehaviorSubject. Она в некоторых случаях показалась мне удобной, интересно твое мнение
@MobileDeveloper
@MobileDeveloper 4 года назад
Долго (очень долго) думал, что про это написать ) Здесь я думаю проще видео сделать чтоб рассказать про эти сущности
@yaroslavishchuk
@yaroslavishchuk 5 лет назад
все очень круто. спасибо. подача немножко похожа как на канале koding in flow, если кому интересно посмотрите очень хорошо изьясняет.
@MobileDeveloper
@MobileDeveloper 5 лет назад
Спасибо!
@denden4455
@denden4455 2 года назад
Всё через ж в жаве
@andrey_krysh
@andrey_krysh 2 года назад
Вопрос про дистинкт, если бы прайс был бы дата классом, все равно бы все вывел?
@andrey_krysh
@andrey_krysh 2 года назад
Аа лол, поторопился )))
@Амелия-э9ь
@Амелия-э9ь 5 лет назад
Отличная подача теории + практические примеры. Спасибо, рад что открыл для себя Ваш канал.
@MobileDeveloper
@MobileDeveloper 5 лет назад
Спасибо вам большое!)
@АлександрТарасюк-г1ц
Хороший звук, хорошая подача материала, примеры.
@MobileDeveloper
@MobileDeveloper 5 лет назад
Спасибо большое вам!)
@alex_chursin
@alex_chursin 5 лет назад
str.toLowerCase().contains( "a") -> можно короче: str.contains( "a", true) // (ignoreCase = true)
@MobileDeveloper
@MobileDeveloper 5 лет назад
Да сейчас так делаю уже
@JalexyDev
@JalexyDev 4 года назад
Класс. Видео кнч, можно было сократить мин на 10 - 15, если убрать процесс решения сложных ситуаций, и оставить результат с пояснением, но тема действительно большая. Спасибо за труд! Вроде все понятно, но сразу все в голове не уложится, нужна практика. Если еще принимаешь пожелания, то я пока не увидел заголовка среди твоих видео о Dagger и о Retrofit, судя по вакансиям - это довольно популярные фреймворки, и если лично мне понятно (примерно) как работает retrofit, то dagger - это вообще что-то за гранью понимания начинающим андроидщиком (вроде меня). По-этому если еще не снимал о них, то было бы интересно увидеть уроки на эти темы. А если снимал, то я обязательно до них доберусь, как разберусь с rxjava и корутинами. =)
@MobileDeveloper
@MobileDeveloper 4 года назад
Спасибо за развёрнутый отзыв :) практика - ключ к успеху ) насчёт Dagger есть видео и на канале и есть ещё патреон там есть дополнительные видео в том числе и по даггеру, но уже по современному
@JalexyDev
@JalexyDev 4 года назад
@@MobileDeveloper отлично! Поищу, посмотрю...мне бы хотя бы суть понять, а там дело практики...
@alltheirrecords5634
@alltheirrecords5634 3 года назад
skipLast() может использовать для поиска игнорируя окончания слов. Если написать Конь, покажет Кони, Коня, Коней и тд
@MobileDeveloper
@MobileDeveloper 3 года назад
Спасибо ) Круто!
@Trecoolerok
@Trecoolerok 3 года назад
Бро, так просто объяснил сложные вещи, большое спасибо
@MobileDeveloper
@MobileDeveloper 3 года назад
Спасибо)
@kickout367
@kickout367 5 лет назад
Лайк неглядя)))) ща заценим...
@MobileDeveloper
@MobileDeveloper 5 лет назад
Спасибо! ) Ваша активность это то что двигает канал вперед )
@anatoliifrolov6959
@anatoliifrolov6959 4 года назад
Огромное спасибо за урок, очень полезно!
@MobileDeveloper
@MobileDeveloper 4 года назад
Пожалуйста :)
@КахарманБалтабаев-б2о
Шикарный урок!
@MobileDeveloper
@MobileDeveloper 2 года назад
Спасибо )
@andyrumpel8641
@andyrumpel8641 5 лет назад
Автоматический лайк
@MobileDeveloper
@MobileDeveloper 5 лет назад
Спасибо! :)
@sfiirwuejnn
@sfiirwuejnn 5 лет назад
О, шикардос)
@MobileDeveloper
@MobileDeveloper 5 лет назад
Спасибо!
@Symbi0x7
@Symbi0x7 3 года назад
Алексей, подскажи, пожалуйста, почему у меня нет метода textChanges для EditText?
@MobileDeveloper
@MobileDeveloper 3 года назад
Если я правильно помню, то я его демонстрировал в нашем Леруа Мерлен проекте и там это extension function. То есть ее написать надо )
@Symbi0x7
@Symbi0x7 3 года назад
@@MobileDeveloper понял) В любом случае, спасибо за видео ;)
@MobileDeveloper
@MobileDeveloper 3 года назад
Пожалуйста )
Далее
Запросы в 1С за 3 часа. Часть 2
3:17:01