Jetpack Paging 3. Пагинация на Android

  Рет қаралды 37,252

Android Broadcast. Все об Андроид разработке

Android Broadcast. Все об Андроид разработке

Күн бұрын

Организация пагинации длинных списков в Android приложениях на основе Jetpack Paging 3.0
🔗 AvitoTech avito.tech/
🔗 Каналы "Android Broadcast" taplink.cc/android_broadcast
🔗 Поддержать проект taplink.cc/android_broadcast/...
🔗 Подать заявку на выступление в Android Broadcast forms.gle/rrfXjYBD1i3XYmJx9
🔗 Руководство Jetpack Paging 3.0 bit.ly/30JJewb
🔗 Android Paging Codelab от Google bit.ly/3f49Uxa
🔗 Код из видео bit.ly/33zdbiG
0:00 Вступление
0:33 Зачем нужна пагинация?
3:30 Партнерская интеграция
4:00 Jetpack Paging 3
5:55 Архитектура пагинации от Google
8:40 Конфигурация Paging 3
12:13 Реализация PagingSource
22:09 Интеграция PagingSource в ViewModel
25:13 Отображение данных
27:47 Отображение ошибок/прогресса в header/footer
30:09 Отслеживание состояния загрузки
32:48 Проблемы RemoteMediator
34:22 Заключение
34:48 Титры
#AndroidBroadcast #Paging #Jetpack

Пікірлер: 119
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
🔗 AvitoTech avito.tech/ 💰 Поддержать проект bit.ly/3sratqQ 📰 Android Broadcast Telegram ttttt.me/android_broadcast
@user-ft9cl8dm6y
@user-ft9cl8dm6y 2 жыл бұрын
Ъ
@beeline09
@beeline09 3 жыл бұрын
Все никак руки не доходили изучить тему, но благодаря тебе все легко усвоил. Спасибо за хороший контент!
@05Sambist
@05Sambist 3 жыл бұрын
спасибо большое Кирилл!! как раз изучаю данную тему!!
@user-jo4pu2tg3w
@user-jo4pu2tg3w 3 жыл бұрын
Спасибо большое! Побольше бы таких обучающих видео
@avramones8960
@avramones8960 2 жыл бұрын
Спасибо за видео, Кирилл. Очень познавательно.
@lemarkmain1713
@lemarkmain1713 2 жыл бұрын
Спасибо! все запустилось и, казалось бы, такие сложные вещи уже стали более понятными :) а статью по paging 3 с дев андроид сайта все же было сложнее разобрать
@amandoponov3560
@amandoponov3560 3 жыл бұрын
Спасибо, успехов каналу👍🏼
@EpicRackBattle
@EpicRackBattle 3 жыл бұрын
Огромное спасибо за твой труд Кирилл, лайк за тему не глядя !!!
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
А лучше ещё и посмотреть до конца и обратной связи побольше!
@Capitistrum
@Capitistrum 4 ай бұрын
Спасибо за видео! Официальная документация не особо хотела поддаваться мне. А когда видео и с исходным кодом - удалось разобраться! :)
@user-nf9gh5kv5c
@user-nf9gh5kv5c 3 жыл бұрын
Отличное видео. Спасибо!
@user-ou9ft3yw3h
@user-ou9ft3yw3h 3 жыл бұрын
Благодарю, очень интересно
@nowiwr01
@nowiwr01 3 жыл бұрын
Спасибо за видео, Кирилл. Вы очень хорошо объясняете)
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Рад стараться!
@sergeyvoloshin1553
@sergeyvoloshin1553 3 жыл бұрын
комментарий в поддержку канала, спс за контент!
@heroachilles
@heroachilles 2 жыл бұрын
Благодарю, очень интересно!
@user-jl7kw8hx6i
@user-jl7kw8hx6i 2 жыл бұрын
Кирилл, большое спасибо за крутой контент! !!
@MikhailGureev
@MikhailGureev 2 жыл бұрын
Топовый видос! Ракета-пушка-гонка! Спасибо!
@Oleg_Bessonov
@Oleg_Bessonov 3 жыл бұрын
Спасибо!!!
@Footba246
@Footba246 2 жыл бұрын
Спасибо за видео, Кирилл
@user-te8um6ox9p
@user-te8um6ox9p 3 жыл бұрын
Круто! Спасибо большое! Шрифт в студии чуть побольше бы
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
В следующий раз сделаю все как надо
@SuperMarkwel
@SuperMarkwel 3 жыл бұрын
Божественный контент, спасибо! Кирилл, думал ли ты о том, что бы сделать серию видео роликов, где бы ты создал простое приложение на максимально современном стеке?
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
У меня была идея таким заняться. Думал заняться такой разработкой, но вот как красиво это вписать в короткий формат я не знаю, да и смотреть как я кожу 6-8 часов подряд и также рыщу доки может быть мало кому интересно. Если есть предложения я рад обсудить, а еще можно поговорить об этом в ближайшем баре
@nickzhylach4379
@nickzhylach4379 3 жыл бұрын
@@AndroidBroadcast Я понимаю, что это работа, но может попробовать? В конце концов всякие стримы игр смотрят)) а тут в любом случае было бы полезно. Думаю даже не только в плане использования всяких либ из стека, но и код-стайл, и организация архитектуры. Одно дело когда смотришь репозиторий и пытаешься разобраться и всё связать, а другое, когда смотришь весь этот техпроцесс от начала и до конца. Может быть, даже сделать "сериал".
@awkwardquestion8643
@awkwardquestion8643 3 жыл бұрын
@@AndroidBroadcast обычно такие лайв-штуки не то что бы прямо людям заходят, но мне кажется, если включить в процесс второго человека (что-то типо парного программирования), то сам формат получится гораздо живее (обсуждение решений друг друга, поиск лучших и мини холивары апрувед). Правда это надо еще такого второго человека + чтобы он мог с тобой на равных кодить. Я по крайней мере такого не видел.
@maksmokrytskyi2556
@maksmokrytskyi2556 3 жыл бұрын
Это уже почти онлайн курс получается :) Но однозначно было бы полезно многим
@user-dy6ul7wi4q
@user-dy6ul7wi4q 2 жыл бұрын
Спасибо!
@grafd2505
@grafd2505 3 жыл бұрын
Пробовал эту библиотеку на пет проекте. У этой библиотеки есть один существенный минус - не гибкое апи. Узнать, находится ли список в состоянии прогресса, можно только подписавшись на колбэки ресайклера. То есть вместо того, чтобы стейт был единым и содержался во вью модели, он получается размазанным и зачем-то привязанным к вьюхе. Это значит, что если вы захотите изменить вашу вью, например, воспользоваться джетпак компоузом вместо фрагментов, то придется существенно менять код во вью модели в том числе. Для продакшена я бы не рекомендовал использовать эту библиотеку.
@devkot7040
@devkot7040 2 жыл бұрын
Можете подсказать, есть ли какая-то альтернатива данной библиотеке? И есть ли в данной альтернативе возможность кэширования?
@TheNikbrik
@TheNikbrik 2 жыл бұрын
Спасибо, полезно!
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
💪
@alexkreyter432
@alexkreyter432 2 жыл бұрын
Класс! Насчет разделения моделей, вроде как можно смапить на выходе медиатора под ui модель
@liammcdara1104
@liammcdara1104 2 жыл бұрын
Круто. Большое спасибо. Еще сделайте пожалуйста видео про использование RemoteMediator и как работать с базой при этом. Может на данный момент уже появились обновления.
@anvarjuraqulov7165
@anvarjuraqulov7165 2 жыл бұрын
Спасибо брат отличное видео
@borisveriga5252
@borisveriga5252 3 жыл бұрын
Кирилл привет! Спасибо за видео! Есть идея для ролика: мог бы ты рассказать лучшие про практики создания библиотек для Андройда? Доставка, публичные методы, внутренняя логика(может есть своя особенность тут) подводные камни и т.д. ✌
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Подумаю, может и соберётся видео
@farizmamedow2329
@farizmamedow2329 3 жыл бұрын
Круто. Практическую часть отдельное спасибо. И можно в след раз увеличить как то шрифт а то плохо видно
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Да, в следующий раз сделаю немного по другому
@user-sankarsana
@user-sankarsana 3 жыл бұрын
Да, а то даже на 17 дюймах мелковато.
@rikimaru2015
@rikimaru2015 3 жыл бұрын
Спасибо за информацию. Как раз смотрю paging 3 для перехода с paging 2 - много чего из коробки поддерживается, но все же некоторые проблемы такие же как и в прошлой версии. Например, если мы хотим после refresh показать начало списка, то также нужно изощрятся. Также смотрю если мы проскролим куда-то на несколько страниц вниз и потом добавляем в начало списка новый элемент, то он не появляется и onItemRangeInserted не срабатывает. Кирилл, если будет возможность сделайте потом более подробный разбор с добавлением, удалением элементов - все обзоры и примеры обычно делают только с отображением списка
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Подробнее про что именно в добавление/удалении элементов? Это примеры касается Paging или RecyclerView именно?
@rikimaru2015
@rikimaru2015 3 жыл бұрын
@@AndroidBroadcast Ну было бы отлично рассмотреть как реализовать в paging 3 ленту своих постов. Мы их может загрузить с api, закешировать (для отображения без интернета). Также можем добавить новый пост или удалить существующий. Я так понимаю в новом paging для этого мы будем использовать RemoteMediator. При чем тут paging - в версии 2 удаление элемента можно было нормально сделать только через room. Если мы использовали без рум, то там вариант для обновления списка только invalidate - что не очень красиво выглядит.
@danemano8677
@danemano8677 3 жыл бұрын
Поддерживаю запрос, при реализации чата возникла проблема с приходом нового сообщения, когда пользователь проскролил чат наверх, не понятно как это сделать не перезагружая все данные заново
@alyxeinside3930
@alyxeinside3930 3 жыл бұрын
Привет Спасибо за видео Есть ещё один интересный момент, что если RemoteMediator вернул endOfPaginationReached true и, а мы вдруг резко придумали делать фильтры через RM, то вполне ожидаемая ситуации, что данные уже не будут грузиться. Очень хотелось бы, чтобы в следующей версии они сделали фабрику для RM, как для PagingSource. Иначе не получится использовать локальное хранилище, а это прям грусть-грусть.
@alyxeinside3930
@alyxeinside3930 3 жыл бұрын
Привет Спасибо за видео Над paging'ом прям какие-то гении работали, весь интересно все придумали. По поводу, момента с типами данных и почему они, что у PagingSource, что у RemoteMediator одинаковые - весьма интересно. Что один, что второй - это один и тот же уровень абстракции, и оба обращаются к репозиторию для получения данных. Только один передает набор в PagingAdapter, а другой запрашивает и сообщает, что источник истощен. Ни один из них не должен знать откуда данные получаются, ни куда они сохраняются. Соответственно, оба используют следующий уровень абстракции. Таким образом, у нас получается, что есть view - viewModel - paging - repository - api. Казалось бы чутка грамосткая цепочка, но PagingData может мапиться внутри viewModel, а потом ещё и в view. Google похоже задумала выносить paging в multiplatform.
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
По поводу KMM - тут не спроста уже завезена поддержка Compose и есть артефакт без Android зависимостей
@kovanodevelop
@kovanodevelop 2 жыл бұрын
Подскажите пожалуйста: как подсветить разным цветом фигурные скобки в студии?
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
Плагин Rainbow Brackets в IDEA/Android Studio
@sleepycreepy6424
@sleepycreepy6424 2 жыл бұрын
спасибо за видео, я правильно понимаю, что пагинация юзается в том случае, когда сервер может информацию постранично? если сервер выдает инфу сплошняком, без возможности задания конкретной страницы, то и пагинация не нужна?
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
Вы верно сказали, только сервер не должен выдавать много данных сразу: - слишком долго будут проходить сетевые запросы - клиенту придется обрабатывать данные, которые не факт что ему нужны - может произойти OutOfMemoryError
@sleepycreepy6424
@sleepycreepy6424 2 жыл бұрын
@@AndroidBroadcast понятно, спасибо большое)
@jay_msk
@jay_msk 2 жыл бұрын
Кирилл привет! А как решается проблема дубликатов? Если к пример была загружена первая страница, потом на бэке был добавлен новый элемент в топ. При загрузки следующей страницы у нас будет дубликат в виду того что на бэке все съехало на 1 позицию
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
Это ответственность сервера. Он либо должен иметь ключи,тобой должен уведомлять вас об необходимости загрузки с нуля
@GarcianSmt
@GarcianSmt 3 жыл бұрын
Спасибо за видео! Сам уже в нескольких проектах использовал Paging 3 (медиатор для кеширования никогда не использовал). Для меня остался актуальным вопрос, каким образом это можно протестировать (я имею ввиду unit-тесты). Сам ковырялся, но к чему-то однозначному и полезному не пришел.
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Там есть специальная зависимость для работы с Paging 3 из Unit тестов, но вот что там я не смотрел
@gaoliang1368
@gaoliang1368 11 ай бұрын
It would be awesome if you can make a CRUD operations with Paging 3
@kirillsushilnikov9614
@kirillsushilnikov9614 4 ай бұрын
Спасибо, Кирилл. А как можно модифицировать данные в адаптере извне? Скажем, прилетела инфа, что такой-то айтес с определенным id должен быть обновлен (например произошло добавление в избранное). Если делать через submitData, то обновляется полностью список и пашигация ломается.
@AndroidBroadcast
@AndroidBroadcast 4 ай бұрын
Можно поменять данные через DiffUtil списками, либо в списке данных внести изменения и вызвать у адаптера метода что изменился конкретный элемент
@apbuzzz
@apbuzzz 3 жыл бұрын
Спасибо за обзор либы.
@l1xly317
@l1xly317 2 жыл бұрын
Кирилл, а проблема с RemoteMediator, о которой ты упоминал в конце, уже решена в библиотеке?
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
Насколько знаю в 3.1 пока все было по старому
@l1xly317
@l1xly317 2 жыл бұрын
@@AndroidBroadcast эхх жаль, спасибо за ответ
@alexkreyter432
@alexkreyter432 2 жыл бұрын
Брал эту же newsapi попробовать сделать mediator, столкнулся с проблемой, не получается нормально пагинировать данные, сначала спокойно проходит первая страница, потом залпом 3, и под конец еще одна. Наверное, я дурак, или какая-то магия с LoadType
@user-nv6rk5wt3f
@user-nv6rk5wt3f 3 жыл бұрын
Либа получилась прикольная, есть только один вопрос, можно ли сделать показ первого прогресс без привязки в adapter?
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Можно попробовать подписаться на Flow из Pager. Он будет пустой или содержать какой-то стаб
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Каким-то образом PagingDataAdapter получает информацию из PagingData, точно способ есть. Возможно API internal
@alexandernifanin7366
@alexandernifanin7366 3 жыл бұрын
Код примера написан хорошо, библиотека сложная (проще велосипедом). Скачал пример, запустил на эмуляторе - отображается белый список без данных. Отключение соединения ничего не меняет (не выводятся ошибки). Даже смена URL ничего не меняет.
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Возможно превышен лимит на количество запросов по API
@ivanchepelkin6347
@ivanchepelkin6347 2 жыл бұрын
Можно ли в запросе передавать не только ключ и страницу, но еще и какие то свои кастомные параметры (query, path, body) ? Как это делать? метод load принимает только 2 параметра(
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
Это все передается через конструктор, так как Paging работает для одного и того же вызова API с пагинацией
@bty_s
@bty_s 3 жыл бұрын
В моем случае часть параметров REST запроса может изменяться в UI. В примерах с RemoteMediator что в сэмплах гугла, что в кодлабс, что в доках нет примера такого юзкейса. Передав в Pager remoteMediator с query в конструкторе, изменить query уже не выйдет, тк до remoteMediator после создания pager уже не добраться. Как менять уже существующий query из UI внутри remoteMediator на ходу я что-то не придумал (если такой способ вообще есть). Выходом оказалось реинициализация самого Pager при изменении параметров query. Но с этим вариантом тоже нашлась проблема. В некоторых вариках построения пайплайна флоу, при смене query, новый вызов Pager(..).flow возвращал всегда один и тот же старый инстанс. Долго разбираться с этим не стал, причины наверняка где-то зашиты в сорсах. В конце концов сумел заставить его мне каждый раз новый флоу возвращать. Но было бы конечно здорово иметь такую возможность из коробки.
@alyxeinside3930
@alyxeinside3930 3 жыл бұрын
Привет Вижу не один столкнулся с этой проблемой Так получилось настроить кеширование или все таки данные грузятся через PagingSource?
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Через RemoteMediator можно настроить кеширование только при условии одинаковых моделей
@user-zw5ps7jz2y
@user-zw5ps7jz2y 2 жыл бұрын
При повороте экрана приложение падает с ошибкой "Attempt to collect twice from pageEventFlow, which is an illegal operation. Did you forget to call Flow.cachedIn(coroutineScope)?...". Пробовал по по гугловскому мануалу сделать через с помощью Rx. Оно вроде бы работает, но при повороте экрана список загружается снова. В чем дело не понятно(
@amaralez5718
@amaralez5718 2 жыл бұрын
В чем разница между возвратом из интерфейса запроса Response и Call?
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
Response это результат в обёртка, а Call - это сущность вызова из OkHttp
@Artem-nl5rw
@Artem-nl5rw 2 жыл бұрын
Спасибо большое за видео! И было бы хорошо увеличить шрифт или кадрировать запись только на редактор кода. С мобилки неудобно смотреть =)
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
В более поздних видео я уже улучшал этот параметр
@danman2097
@danman2097 Ай бұрын
Здравствуйте, если написать реализацию, как у вас, то при перевороте экрана будет снова выводиться snackbar, так как снова будет прилетать state ошибки. можно ли как-то получить ошибку во viewmodel? в целом, как это можно исправить?
@AndroidBroadcast
@AndroidBroadcast Ай бұрын
SingleLiveEvent или SharedFlow на замену можно. Ещё вариант - держать ошибку часть часть модели состояния для UI. Также можно просто отправлять событие об ошибке
@nazirjonm6560
@nazirjonm6560 2 жыл бұрын
Спасибо за видео! Как можно item добавить, изменить, удалить в PagingDataAdapter?
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
Не знаю ( Скорее всего надо удалять его в модели
@neerajverma9226
@neerajverma9226 3 жыл бұрын
Do you have any English channel?
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
No
@bekaryssailaukul1006
@bekaryssailaukul1006 2 жыл бұрын
Как сделать такие же зависимости в koin ?
@user-ky2bu1wl7n
@user-ky2bu1wl7n 3 жыл бұрын
Добрый день, а можно осветить в одном из следующих видео как в Jetpack Compose Desktop (не Android) прикрутить нормально MVVM (c usecase, repository, coroutines). Даже просто примитивный пример с каким-нибудь Api. А то все рисуют красивую , почти статичную верстку, а чтобы эта верстка зависела от нормальной бизнес логики - нет. Заранее спасибо
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Тема Compose будет освещаться на канале, но вот Desktop не в приоритете
@user-xv4je5gs4h
@user-xv4je5gs4h 2 жыл бұрын
В PagingConfig указываю pageSize = 5. Но по факту (при первой инициализации) получаю params.loadSize - 15! Почему так?
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
Первая загрузка немного другая. Там есть доп параметры, влияющие на количество элементов при первой загрузке, чтобы сразу скролл не возникал.
@user-ot1mo1rj8d
@user-ot1mo1rj8d 2 жыл бұрын
9:45 просто взгляни
@5treetart863
@5treetart863 3 жыл бұрын
Пагинация назад вроде ж была в старой библиотеке
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Возможно, я не помню уже
@YEVSU
@YEVSU 3 жыл бұрын
А может кто-то этот факт подтвердить на собственном опыте? У меня со старой версией пагинация назад не работала и я думал что метод loadBefore существует только для частных случаев, когда у пользователя етсь возможность прыгнуть по shortcut в середину списка.
@5treetart863
@5treetart863 3 жыл бұрын
@@YEVSU я лично использовал пагинацию назад для того чтобы скроллить вверх список сообщений в чате своего приложения
@YEVSU
@YEVSU 3 жыл бұрын
@@5treetart863 ок, спасибо, видимо я не разобрался
@user-bn6ck9tm5y
@user-bn6ck9tm5y 3 жыл бұрын
Чтобы показать прогресс, можно было в эмуляторе ухудшить интернет
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Спасибо, совсем забыл про эту возможность. Похоже надо сделать видео про возможности Android эмулятора
@alexandernifanin7366
@alexandernifanin7366 3 жыл бұрын
А эта опция работает? Года 4 назад ни на Винде, ни на Маке не работала.
@user-qf5nn8xn3o
@user-qf5nn8xn3o 2 жыл бұрын
Подскажите, есть ресурс на русском языке с более подробным обзором Paging?
@tommyrio8081
@tommyrio8081 2 жыл бұрын
А как тестировать пагинацию на моб приложениях
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
Что именно протестировать хочется?
@dxnbrawn
@dxnbrawn 3 жыл бұрын
Использую пагинатор от цховребова
@user-ou9ft3yw3h
@user-ou9ft3yw3h 3 жыл бұрын
Конченый автомат?)
@dxnbrawn
@dxnbrawn 3 жыл бұрын
@@user-ou9ft3yw3h угу он самый
@volodymyr.od.ua.
@volodymyr.od.ua. 3 жыл бұрын
начал сегодня переход, написал RemoteMediator и столнулся с проблемой разных моделей для бд и для ui (( кто то уже нашёл как это обойти?
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
То же самое, поэтому даже не стал показывать пример. Надо чтобы улучшили этот момент, вряд ли они в Google делают одни и те же модели для всего.
@volodymyr.od.ua.
@volodymyr.od.ua. 3 жыл бұрын
@@AndroidBroadcast в Гугл репозитории в примере на гидхабе, используется одна модель)
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Видел. Пример в вакууме
@dream_owner
@dream_owner 3 жыл бұрын
PagingData можно мапить
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Да, но при создании Pager тебе нужны PagingSource и RemoteMediator, который имеют одинаковый ключ и тип данных, а маппить уже получиться только во Flow
@Igor-yh4gl
@Igor-yh4gl 3 жыл бұрын
Очень мелкий шрифт
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
На каком экране смотрели (диагональ и разрешение)?
@Igor-yh4gl
@Igor-yh4gl 3 жыл бұрын
@@AndroidBroadcast 13'' (макбук), пришлось переключится в 1080, иначе не разобрать было
@user-xs3wx8vy8g
@user-xs3wx8vy8g 3 жыл бұрын
Очень тяжело. На таких скоростях. Контент не для начинающих. Вообще все голопом ни чего не понял.
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Все верно. Контент для начинающих. Прелесть видео, что можно посмотреть еще раз )
@user-xs3wx8vy8g
@user-xs3wx8vy8g 3 жыл бұрын
@@AndroidBroadcast много о себе думать вредно.
Что нового в Kotlin 1.5.0?
15:10
Android Broadcast. Все об Андроид разработке
Рет қаралды 9 М.
Распознавание лиц и поз за 40 минут. Денис Неклюдов, Lyft
46:34
Android Broadcast. Все об Андроид разработке
Рет қаралды 10 М.
Incredible magic 🤯✨
00:53
America's Got Talent
Рет қаралды 67 МЛН
I wish I could change THIS fast! 🤣
00:33
America's Got Talent
Рет қаралды 128 МЛН
아이스크림으로 체감되는 요즘 물가
00:16
진영민yeongmin
Рет қаралды 54 МЛН
Каха и суп
00:39
К-Media
Рет қаралды 4,2 МЛН
Миграция с LiveData на Coroutines Flow
25:02
Android Broadcast. Все об Андроид разработке
Рет қаралды 29 М.
Новостное приложение: с нуля до публикации в Google Play. Часть 1
2:09:40
Android Broadcast. Все об Андроид разработке
Рет қаралды 23 М.
Jetpack Compose - будущее Android UI и убийца Fragment
22:57
Android Broadcast. Все об Андроид разработке
Рет қаралды 37 М.
Android Custom View. Собственная ViewGroup
30:30
Android Broadcast. Все об Андроид разработке
Рет қаралды 14 М.
Convert Figma Designs to Jetpack Compose Code With This FREE Plugin 😱
25:40
Советы по уведомлениям в Android
25:15
Android Broadcast. Все об Андроид разработке
Рет қаралды 9 М.
How Retrofit works. Java Dynamic Proxy. Library architecture [RU]
29:24
Android Broadcast. Все об Андроид разработке
Рет қаралды 19 М.
Samsung Galaxy Unpacked July 2024: Official Replay
1:8:53
Samsung
Рет қаралды 23 МЛН
Battery  low 🔋 🪫
0:10
dednahype
Рет қаралды 414 М.
⚡️Супер БЫСТРАЯ Зарядка | Проверка
1:00