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

Поділитися
Вставка
  • Опубліковано 6 вер 2024
  • Всем привет. Наконец-таки я подошел к обзору одной из самых сложных библиотек для Андроид. Видео будет в нескольких частях, поэтому если вы что-то не увидели здесь - оно будет в следующих выпусках.
    Мобильный разработчик в других соц. сетях
    =======================
    Вконтакте - 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...
    Ставь лайк, подписывайся и пиши, чтобы ты хотел увидеть в следующих видео.

КОМЕНТАРІ • 121

  • @didaray8854
    @didaray8854 3 роки тому +15

    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)

  • @momentslikethis8014
    @momentslikethis8014 5 років тому +41

    самаые адекватные уроки на ютубе продолжай бро)
    Jetpack разбери пожалуйста

    • @MobileDeveloper
      @MobileDeveloper  5 років тому

      Спасибо большое, окей записал!

  • @user-fz7eq9kq8o
    @user-fz7eq9kq8o 5 років тому +30

    Очень круто объясняешь тяжелые вещи) Хотелось бы посмотреть уроки по чистой архитектуре от тебя.

    • @MobileDeveloper
      @MobileDeveloper  5 років тому +4

      Спасибо ) да архитектура тоже будет ))

    • @preenxus3425
      @preenxus3425 5 років тому +1

      плюс. очень хочется это послушать. там куча нюансов.

  • @namesecondname7863
    @namesecondname7863 5 років тому +9

    Огромное спасибо за выпуски! Не останавливайтесь!)

    • @MobileDeveloper
      @MobileDeveloper  5 років тому +1

      Спасибо ) не планирую останавливаться ))

  • @kafychannel
    @kafychannel 2 роки тому +3

    Привет, Алексей . Спасибо за видео по андроид. Давно смотрю вас и как - то уютно становится от просмотра ваших видео - уроков. Особенно песня в начале видео 0:15 просто великолепна. Помню, я писал вам около года назад, чтобы найти эту музыку, вам написал её друг и вы скидывали ссылку на icloud , если мне не изменяет память))

  • @jojomajo
    @jojomajo 4 роки тому +2

    Я вот что думаю такой полезный канал, столько ценной информации для разработчиков и так мало подписчиков. И я знаю почему так, это не потому что информация какая-то не та или ещё что-то. Это потому что многие даже не догадываются о существовании это канала даже не имеют понятия что есть канал на котором они найдут почти все что ищут. Я сам на самом деле с трудом нашел тебя, притом что запросы по android kotlin и тд достаточно давно отправляю и ютуб очень долго не давал вообще какого-либо намека что такой канал есть. Вот в чем прикол, очень очень много людей не могут найти этот канал в принципе( Я думаю что тут без какого-либо вмешательства из вне не обойтись, тут имеется ввиду что нужно распространять информацию о канале, даже в комментариях общаетесь, где то пишите что есть такой канал, чтобы люди могли знать что есть такой клад информации) И думаю что небольшая рекламная интеграция тоже не помешает, возможно на хабре статейку стоит запилить или что-то вроде этого (возможно она уже есть а я и не знаю((

    • @MobileDeveloper
      @MobileDeveloper  4 роки тому +1

      Да, наверное. Я особо не парюсь на счёт распространения. Но если вы поделитесь каналом я буду очень благодарен )

    • @jojomajo
      @jojomajo 4 роки тому +1

      @@MobileDeveloper пиарю везде где только можно)

    • @MobileDeveloper
      @MobileDeveloper  4 роки тому +1

      Спасибо большое ))

  • @MishaAkopov
    @MishaAkopov 4 роки тому +3

    Хотя я почти всё знал, есть чувство что етот видос был очень полезен, так держать! Правда очень качественно всё расказанно. Под каждым видосом 1 лайк мой :)

  • @EugeneVoronoy
    @EugeneVoronoy Рік тому +1

    Спасибо!

  • @user-xu8zx2vt5h
    @user-xu8zx2vt5h 5 років тому +1

    Отличная подача теории + практические примеры. Спасибо, рад что открыл для себя Ваш канал.

  • @nikolyababa1215
    @nikolyababa1215 3 роки тому +1

    Спасибо, добрый человек!

  • @user-wj1hg2lp2j
    @user-wj1hg2lp2j 2 роки тому +1

    thank you so much !

  • @podo_x2
    @podo_x2 5 років тому +3

    1:09:00 зажав alt можно выделять строки по вертикали)

  • @user-ho4ey5rm1e
    @user-ho4ey5rm1e 5 років тому +1

    Хороший звук, хорошая подача материала, примеры.

  • @yaroslavishchuk
    @yaroslavishchuk 5 років тому +1

    все очень круто. спасибо. подача немножко похожа как на канале koding in flow, если кому интересно посмотрите очень хорошо изьясняет.

  • @sexol1235
    @sexol1235 5 років тому +1

    Думаю во время объяснения, вместо фона логичнее демонстрировать что то , те же диаграммы из документации вполне подойдут. В остальном все хорошо.

    • @MobileDeveloper
      @MobileDeveloper  5 років тому +1

      Я понимаю это желание, но это существенно увеличит время монтажа. А я хотел бы больше времени посвятить видео

  • @serggio88888
    @serggio88888 4 роки тому +1

    Алексей, респект тебе. Былибы деньги - дал бы)

    • @MobileDeveloper
      @MobileDeveloper  4 роки тому

      Спасибо ) вы можете поддержать канал и другим способом. Просто разместите понравившееся видео у себя в соц сетях это будет огромная помощь

  • @awkwardquestion8643
    @awkwardquestion8643 4 роки тому

    Некоторые операторы есть в самом нативном котлине (да и джаве 8 вроде бы тоже), если кто-то еще не знает.
    Тот же мап очень помогает экомить код при работе с коллекциями, как и фильтр

  • @n.konshin
    @n.konshin 2 роки тому

    Всё круто, но с map ошибка в видео 19:35, мы можем возвращать другой тип, например с маппить ДТОшки в Домейн и тд)

    • @MobileDeveloper
      @MobileDeveloper  2 роки тому

      Имелось ввиду, что мы не можем маппить сингл в обсервабл

    • @n.konshin
      @n.konshin 2 роки тому

      @@MobileDeveloper возможно я что то не понял, сложилось впечатление, что имеется ввиду, что тип может быть только тот, что и поступил на вход ( но не важно, это мелочи, спасибо за контент, очень помогает узнать новое, и повспоминать старое)

    • @Mr7Pantera7
      @Mr7Pantera7 5 місяців тому

      @@n.konshin да нет, именно его слова вы правильно поняли, он говорит что если на входе стринг, на выходе инт не может получится, тоже удивился

  • @oooelesta1093
    @oooelesta1093 3 роки тому

    Спасибо большое за отличные уроки!!! Просто лучший

  • @Trecoolerok
    @Trecoolerok 3 роки тому

    Бро, так просто объяснил сложные вещи, большое спасибо

  • @JalexyDev
    @JalexyDev 4 роки тому

    Класс. Видео кнч, можно было сократить мин на 10 - 15, если убрать процесс решения сложных ситуаций, и оставить результат с пояснением, но тема действительно большая. Спасибо за труд! Вроде все понятно, но сразу все в голове не уложится, нужна практика.
    Если еще принимаешь пожелания, то я пока не увидел заголовка среди твоих видео о Dagger и о Retrofit, судя по вакансиям - это довольно популярные фреймворки, и если лично мне понятно (примерно) как работает retrofit, то dagger - это вообще что-то за гранью понимания начинающим андроидщиком (вроде меня). По-этому если еще не снимал о них, то было бы интересно увидеть уроки на эти темы. А если снимал, то я обязательно до них доберусь, как разберусь с rxjava и корутинами. =)

    • @MobileDeveloper
      @MobileDeveloper  4 роки тому

      Спасибо за развёрнутый отзыв :) практика - ключ к успеху ) насчёт Dagger есть видео и на канале и есть ещё патреон там есть дополнительные видео в том числе и по даггеру, но уже по современному

    • @JalexyDev
      @JalexyDev 4 роки тому

      @@MobileDeveloper отлично! Поищу, посмотрю...мне бы хотя бы суть понять, а там дело практики...

  • @anatoliifrolov6959
    @anatoliifrolov6959 4 роки тому

    Огромное спасибо за урок, очень полезно!

  • @maxsimpleapps
    @maxsimpleapps 4 роки тому

    Годнота!
    Алексей, не хватает фирменных камешковых rx диаграм. С помощью них ты бы гораздо лучше смог подать материал 👍🏻 Но и сейчас всё очень хорошо.
    Грокаю реактивщину с помощью книги "Реактивное программирование с применением RxJava", параллельно с ней твои видео очень хорошо заходят. Спасибо!

  • @michaelk268
    @michaelk268 4 роки тому +1

    Крутое видео! Есть еще такая сущность Subject и ее реализация BehaviorSubject. Она в некоторых случаях показалась мне удобной, интересно твое мнение

    • @MobileDeveloper
      @MobileDeveloper  4 роки тому +1

      Долго (очень долго) думал, что про это написать ) Здесь я думаю проще видео сделать чтоб рассказать про эти сущности

  • @user-de6dd1dd8e
    @user-de6dd1dd8e 3 роки тому +1

    Здравствуйте, Алексей. Расскажите пожалуйста про Handler, Looper и MessageQueqe

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Была такая мысль, но все не успеваю.

  • @preenxus3425
    @preenxus3425 5 років тому +3

    39:39 никакой магии, я все также делаю)) а то многие корчат из себя гениев, будто они все с первого раза понимают и кодят без ошибок

    • @MobileDeveloper
      @MobileDeveloper  5 років тому +1

      Да я стараюсь показывать и моменты где не получается )

  • @user-sq5cr5uq8i
    @user-sq5cr5uq8i 2 роки тому

    Шикарный урок!

  • @s.a.3408
    @s.a.3408 4 роки тому +2

    Мне кажется, проще делать так, чем юзать метод add():
    composeBag += Observable.just(...)...

    • @MobileDeveloper
      @MobileDeveloper  4 роки тому +2

      Да вы правы )

    • @s.a.3408
      @s.a.3408 4 роки тому +1

      @@MobileDeveloper ух ты, круто!
      Мало того что очень классный материал, ещё и обратная связь есть)
      Спасибо, MD!!!

    • @MobileDeveloper
      @MobileDeveloper  4 роки тому +2

      👌👍

  • @andyrumpel8641
    @andyrumpel8641 5 років тому

    Автоматический лайк

  • @sfiirwuejnn
    @sfiirwuejnn 5 років тому

    О, шикардос)

  • @user-oc7py1vy6s
    @user-oc7py1vy6s 4 роки тому +1

    Создавать observable оператором just, а потом писать SubscribeOn... ObserveOn... не имеет никакого смысла, так как всё выполнится в потоке в котором выполнится subscribe. 3 часть не смотрел, но надеюсь Вы там затронете тему того не все операторы создания observable поддерживают распараллеливание потоков.

    • @MobileDeveloper
      @MobileDeveloper  4 роки тому +1

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

  • @pavelsumin4678
    @pavelsumin4678 5 років тому +1

    Спасибо за видео!
    Часть 3 будет по объединению потоков данных (zip, concat ...)?

    • @MobileDeveloper
      @MobileDeveloper  5 років тому

      Да про это и ещё там про разные штуки

  • @preenxus3425
    @preenxus3425 5 років тому

    Настройте удаление строки по shift+delete, это спасает кучу времени. По шагам:
    Идем в менеджер шорткатов (Setting -> Keymap), ищем там delete line, задаем горячую клавишу shift+delete - готово. Почти, она будет занята, просто переопределите.

    • @MobileDeveloper
      @MobileDeveloper  5 років тому

      Спасибо большое! Настрою

  • @TalgatTR
    @TalgatTR 5 років тому

    Хороший канал, мне нравится

    • @TalgatTR
      @TalgatTR 5 років тому

      Нажал колокольчик

    • @MobileDeveloper
      @MobileDeveloper  5 років тому

      Спасибо большое!)

  • @kickout367
    @kickout367 5 років тому

    Лайк неглядя)))) ща заценим...

    • @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 років тому +1

      Используй логгирование в okhttp клиенте посмотри что уходит и что приходит я думаю сразу поймёшь в чем дело

    • @Andrey-pu1lv
      @Andrey-pu1lv 5 років тому

      после добавления двух заголовков проблема исчезла

  • @schnaps1981
    @schnaps1981 5 років тому

    Больше уроков по Rx!
    а в чем плюсы котлина в отличие от жавы?

    • @MobileDeveloper
      @MobileDeveloper  5 років тому

      Там масса фишек, когда-нибудь сделаю видео на эту тему

  • @steven.3182
    @steven.3182 5 років тому

    Норм

  • @ruborus
    @ruborus 5 років тому

    спасибо за урок. У меня один вопрос․ Если я использую Single имеет смысл вызвать dispose в onDestroy ?

    • @MobileDeveloper
      @MobileDeveloper  5 років тому

      Да имеет смысл потому что в момент запроса внезапно может быть вызван onDestroy

  • @user-ee9ql7cu3o
    @user-ee9ql7cu3o 3 роки тому

    hashCode не интересует distinct, только equals там играет роль

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Я уже плохо помню, что я там сказал )

  • @andrey_krysh
    @andrey_krysh 2 роки тому

    Вопрос про дистинкт, если бы прайс был бы дата классом, все равно бы все вывел?

    • @andrey_krysh
      @andrey_krysh 2 роки тому

      Аа лол, поторопился )))

  • @user-hq7yk6gj1p
    @user-hq7yk6gj1p 4 роки тому

    Если не сложно, объясните пожалуйста почему данные от текст вью не попадали в онсабскрайб, все из за того что созданный источник уже на main thread и его не возможно перевести на другой поток или почему то еще? я не особо понял. За уроки спасибо, отличные краткие выжимки из огромных тем прям то что нужно чтобы заполнить пробелы в знаниях

    • @MobileDeveloper
      @MobileDeveloper  4 роки тому

      Спасибо ) а можете таймметку сказать?

    • @user-hq7yk6gj1p
      @user-hq7yk6gj1p 4 роки тому

      @@MobileDeveloper ua-cam.com/video/Z0vB_TlvJJ4/v-deo.html

  • @alltheirrecords5634
    @alltheirrecords5634 3 роки тому

    skipLast() может использовать для поиска игнорируя окончания слов. Если написать Конь, покажет Кони, Коня, Коней и тд

  • @alex_chursin
    @alex_chursin 5 років тому +4

    str.toLowerCase().contains( "a") -> можно короче:
    str.contains( "a", true) // (ignoreCase = true)

  • @николай-пасюк
    @николай-пасюк 4 роки тому

    если не вызывать dispose() в onDestroy(), что произойдет тогда с Disposable после уничтожения Activity?

    • @MobileDeveloper
      @MobileDeveloper  4 роки тому

      Интересный вопрос ) по идее ничего не произойдёт ) но зависит от того что у вас в ветках находится

  • @MaksudTV
    @MaksudTV 2 роки тому

    Что за музыка играет на фоне?

  • @Symbi0x7
    @Symbi0x7 3 роки тому

    Алексей, подскажи, пожалуйста, почему у меня нет метода textChanges для EditText?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

      Если я правильно помню, то я его демонстрировал в нашем Леруа Мерлен проекте и там это extension function. То есть ее написать надо )

    • @Symbi0x7
      @Symbi0x7 3 роки тому

      @@MobileDeveloper понял) В любом случае, спасибо за видео ;)

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Пожалуйста )

  • @alexpetrov6700
    @alexpetrov6700 5 років тому

    48:41 не очень понятно как fromArray сделать. Попробовал, scan не работает тогда, подчеркивает красным. Много чего перепробовал но так и не понял как решить данную проблему((

    • @MobileDeveloper
      @MobileDeveloper  5 років тому

      С array я помню тоже возился, а вы не пробовали в лист собрать observable?

  • @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

  • @user-ho4ey5rm1e
    @user-ho4ey5rm1e 5 років тому

    зачем в котлине 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 років тому

      Это в любом случае инструмент. И то инструмент и то инструмент. Как удобно так и надо использовать. Очень часто функционала корутин вполне достаточно.

  • @denden4455
    @denden4455 2 роки тому

    Всё через ж в жаве

  • @FessNiklas1987
    @FessNiklas1987 4 роки тому

    Transformation, filter - 80мин???? Часть 2???????
    Или видео названо не правильно, или это такая вода.... Мой диплом отдыхает

    • @MobileDeveloper
      @MobileDeveloper  4 роки тому +7

      Хоспади да вам не угодишь. Одному слишком короткое видео другому слишком длинное. Да не нравится не смотрите. Я вас сюда силой что ли тащу?

  • @user-ok3xn3vx3h
    @user-ok3xn3vx3h 3 роки тому

    Спасибо!