Тёмный

#2 CoroutineContext. Настраиваем корутины || Курс по корутинам 

Android Broadcast. Все об Андроид разработке
Просмотров 35 тыс.
50% 1

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

 

23 сен 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 70   
@AndroidBroadcast
@AndroidBroadcast 2 года назад
💰 Поддержать проект на Boosty boosty.to/androidbroadcast 🔗 Telegram канал "Android Broadcast" ttttt.me/android_broadcast 🔗 Telegram канал "Kotlin Broadcast" ttttt.me/android_broadcast
@vladislavaliev2894
@vladislavaliev2894 2 года назад
Кирилл, спасибо за годноту и за вклад в community! Ты делаешь этот мир лучше)
@danzolax6885
@danzolax6885 2 года назад
Лучший утренний контент перед работой)
@zoompartyru
@zoompartyru 2 года назад
Кирилл, спасибо за отличный контент по kotlin coroutines!
@Александр-м7о7т
@Александр-м7о7т 2 года назад
Кирилл, спасибо за шикарный контент Коротко и без воды, шикарный формат А кому что-то не понятно - гугл в помощь) Если бы автор рассказывал о каждой мелочи - то видео бы получилось очень длинным и не охватило бы такую широкую аудиторию, которую охватывает сейчас Так как для тех, кто, что-то знает по корутинам - было бы много воды
@lordraiden_do
@lordraiden_do 2 года назад
Лучший контент в утро субботы!
@mikeshilovski1512
@mikeshilovski1512 2 года назад
Я уже разбираюсь в корутинах, но мне кажется если бы до этого с корутинами не работал было бы сложно все это понять, даже после rx
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Я сам их не понял с первого раза и не думаю что такую концепцию легко сразу понять с первого раза
@speedrages
@speedrages 2 года назад
Да, присоединюсь. Супер подача, коротко и не напряжно. Вопрос от новичка. Как практиковаться в этом? С чего начать практику? Как именно ты начинал практиковаться. Именно начинал. Смотрю разные источники, везде много теории и элементарные примеры, но хотелось бы примеров посложнее, причем с нарастающим уровнем сложности. Буду рад получить ответ, но даже если не получу, все равно продолжу смотреть тебя👍
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Я практиковался уже с опытом в разработке, так что просто взял pet проект или начал писать его чтобы попробовать технологию. + повезло что на работе смог затащить корутины даже в альфа версии в 2017
@speedrages
@speedrages 2 года назад
@@AndroidBroadcast посоветуете как начать практику без опыта, если есть представление как это сделать?
@UUU161
@UUU161 2 года назад
@@speedrages если ты серьезно задаешь такие вопросы, то лучше и не начинать
@Mostwonted7
@Mostwonted7 2 года назад
Спасибо за знания) успехов тебе)
@microdevices
@microdevices 2 года назад
Кратко и по существу
@A-pe5yy
@A-pe5yy 2 года назад
Спасибо за материал!
@evgeniybutov2792
@evgeniybutov2792 2 года назад
Кирилл, спасибо, полезно, интересно ;)
@KekLolChill
@KekLolChill 2 года назад
Балдежный курс
@kickout367
@kickout367 2 года назад
Ну тогда ждем урок еще завтра)))
@AlexanderTymkiv
@AlexanderTymkiv 2 года назад
Кирилл, ты случайно не оговорился на 4:55, когда сказал, что в пуле потоков IO количество потоков не менее 64? Другие источники говорят "не БОЛЕЕ 64". Присоединяюсь к благодарностям за чертовски годный курс по корутинам!
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Можно посмотреть формулу в исходниках. Для IO максимальный размер пулла очень большой, но все эти потоки создаются по необходимости
@ЕвгенийНемцов-ш9щ
@ЕвгенийНемцов-ш9щ 2 года назад
Отличное начало курса, в голове прям щелкает от понимания 😄 Отсюда у меня возник вопрос: можно ли указать саспенд функции, что она должна быть запущена в определенном диспатчере? Я видел вариант, что тело функции можно обернуть в нужный withContext, но не хотелось бы лишний раз переключаться
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Тот способ через withContext и есть который используется для вызова функции в необходимом контексте, другого пути я не видел
@artyoms5186
@artyoms5186 2 года назад
Я так понимаю, что withContext и есть рекомендуемый подход, плюс вообще все функции лучше проектировать main-safe, что если функция может заблочить main поток, ей нужно самой переключить контекст на всякий случай
@Вячеслав-щ8х4и
@Вячеслав-щ8х4и Год назад
Спасибо
@alexpro8317
@alexpro8317 2 года назад
На счёт оберток для провайда диспетчеров, мы отказались от этой штуки, т.к. появилась возможность в тестах напрямую сетить диспетчер в класс Dispatchers. Тесты от этого никак не пострадали, а куча классов убрала лишнюю зависимость, которая больше мозолила глаза
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Сетать напрямую можно только Main Dispatcher, или я что-то упустил в обновлениях?
@arturmorozov4075
@arturmorozov4075 2 года назад
Кирилл, спасибо за видео! На 3:33 кажется не совсем корректная инфа - родитель у которого SupervisorJob не отменяется ведь сам при ошибке в дочерней корутине
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Верно. Надо будет поправить
@SerhiyRadkivskyi
@SerhiyRadkivskyi 2 года назад
Вот рекомендую отличный мини курс молодого бойца по корутинам, уверен его можно еще даже расширить и дополнить примерами: ru-vid.com/group/PLQkwcJG4YTCQcFEPuYGuv54nYai_lwil_
@A-pe5yy
@A-pe5yy 2 года назад
спасибо!👍
@МихаилАкулов-ю7ж
Очень красивое лицо, но лучше было бы смотреть на код, который мелькает не понятно для чего. Речь лучше не как на рынке при навязывании товара, а помедленнее, если, конечно же, это разъяснение для новичков, а не хвастаство перед равными.
@alexpro8317
@alexpro8317 2 года назад
Ещё не хватило инфы про переключение контекста с помощью withContext) о его плюсах и минусах
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Оно будет в следующем видео
@maksbragin
@maksbragin 2 года назад
Как всегда, поверхностно, без объяснения. Тем, кому это действительно важно и они хотят понять, здесь делать нечего. Элементарный пример, ИО, ИО... Не все кто хочет разобраться с корутинами знают, что это абревиатура InputOutput и для чего этот поток. В общем как и с даггером, контент ради контента, а не для людей...
@maksbragin
@maksbragin 2 года назад
Коммент не критики ради, просто хочется действительно толкового объяснения, а не просто пересказ доки.
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Ещё раз - это контент не для новичков, а уже понимающих профессию. Пишите вопросы и я сделаю доп разбор со всеми пояснениями. Знаете как сделать лучше, покажите мне своим примерос
@SerhiyRadkivskyi
@SerhiyRadkivskyi 2 года назад
Вот рекомендую отличный мини курс молодого бойца по корутинам, уверен его можно еще даже расширить и дополнить примерами: ru-vid.com/group/PLQkwcJG4YTCQcFEPuYGuv54nYai_lwil_
@Nerubianify
@Nerubianify 2 года назад
Спасибо! По поводу ссылки на енам, не увидел в описании(
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Добавлю немного позже
@andreyliashuk2516
@andreyliashuk2516 2 года назад
Я где-то давно читал, что IO dispatcher умеет только расширяться, но не умеет утилизировать ненужные потоки. Ты не знаешь, они уже это поправили или так и осталось?
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Без понятия такой подробности. Но каждый раз уничтожать потоки и убивать их невыгодно, так что такое поведение оправдано
@andreyliashuk2516
@andreyliashuk2516 2 года назад
@@AndroidBroadcast Тут проблема, что если во время каких-то нагрузок количество потоков сильно увеличится(например до 40), то потом они будут простаивать. Думаю именно по этому и создали limitedParallelism.
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Да, там его и в Changelog так и объяснили
@dmitriymitroshin7525
@dmitriymitroshin7525 2 года назад
Комментарий.
@RebootSMR
@RebootSMR 2 года назад
В курсе будет какое-нибудь (например, итоговое) видео с разбором того, во что компилятор преобразовывает корутину и как она под капотом работает?
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Нет
@RebootSMR
@RebootSMR 2 года назад
@@AndroidBroadcast спасибо за ответ) а мне на работе уже пару коллег советовали извучить данный вопрос
@МихаилКузнецов-г8у
Спасибо огромное за серию видео. Материал немного сложный, пересматриваю повторно. Вопрос что будет если использовать Default dispatcher с IO операциями? Если при этом Default пул потоков загружен сложной математикой, то часть ядер процессора будут недозагружены?
@AndroidBroadcast
@AndroidBroadcast Год назад
Default и IO настроены с учётом специфики такого рода операций, если вы выберите неправильно -ничего страшного нет
@ДмитрийШиков-ы4ж
@ДмитрийШиков-ы4ж 11 месяцев назад
Кирилл, можете пояснить один момент? Функция Join приостанавливает коррутину пока job'а не выполниться(Suspends the coroutine until this job is complete. ) Если Job это абстракция над коррутингой, то как она может выполняться с приостановленной корутиной? В некоторых статьях вижу такую формулировку "Например, его метод join() позволяет ожидать, пока корутина не завершится"
@AndroidBroadcast
@AndroidBroadcast 11 месяцев назад
При создание корутины через launch или async вы получаете объект Job, который и представляет её. join() - это suspend функция, которая приостановит корутину в которой была вызвана, до тех пор пока не будет выполнена Job (корутина) у которой вызвали join()
@SpinQuarK26
@SpinQuarK26 2 года назад
Почему вы советуете не использовать Dispatchers напрямую, а закидывать их обёртку через DI? Я пользуюсь ими напрямую, не могу вспомнить, чтобы возникали проблемы с этим
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Проблем нет, но вот в тестах из удобнее подменять
@andreyterehin9188
@andreyterehin9188 2 года назад
Благодарю за этот курс! Круто Подскажите пожалуйста какой контекст нужно использовать в CoroutineScope для работы с базой , когда корутина что-то вытаскивает из Room ? У меня, например val coroutineScope = CoroutineScope(Dispatchers.Default), но не уверен, что это правильно
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Лучше взять IO, так как БД - это чтение/запись с/на диск
@BelokonRoman
@BelokonRoman 2 года назад
Если в Dao у метода прописать suspend, то запросы будут выполнятся на Room-овском Dispatcher-е и не надо использовать какой то другой диспатчер. Такое же поведение и у Retrofit-a
@олесясеулова
@олесясеулова Год назад
@@BelokonRoman , а с Realm такое возможно?
@BelokonRoman
@BelokonRoman Год назад
@@олесясеулова не знаю, я с Realm не работаю.
@mukhtarbimurat5106
@mukhtarbimurat5106 2 года назад
спасибо за крутой контент. Одно не понял: Зачем нужен лишние потоки (64 потоков) для io если у нас 8 процессоров (кажется 8 потоков достаточна)? Вед корутины (в отличий от обычных потоков) освобождают свой поток при блокирующем вызове (например запрос в сеть). То есть потоки никогда не будут в wait состояние и нет необходимости для context switch
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Для того чтобы так происходило, I/O должен быть тоже suspend, но пока он только блокирующий (
@mukhtarbimurat5106
@mukhtarbimurat5106 2 года назад
@@AndroidBroadcast то есть сейчас при io запросах (в отличий от delay() допустим) поток не освобождается? Или я чето не понял? В первом видео вроде в обратном говорили: что несколько корутин могут в отдом потоке выполнятся
@АлександрНагель-ж9ю
Привет Я правильно понимаю, что пул потоков, при использовании Dispatcher.IO состоит из нативныех потоков (которых ещё 64)? Буду очень благодарен за ответ, давно не могу разобраться в этом простом вопросе
@AndroidBroadcast
@AndroidBroadcast 2 года назад
64 - это максимум. Потоком создаются отложенно по необходимости
@nadzeyakondrat184
@nadzeyakondrat184 2 года назад
Привет Спасибо за курс. Воспрос: может ли входить main-поток в пул потоков Default dispatcher?
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Нет, в том то и суть чтобы разгрузить главный поток
@user-not_defined
@user-not_defined 2 года назад
Что значит интенсивно вычислительных операций? main же главный поток вроде
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Главный поток больше служит как координатор и гарант последовательного вызова. Например, работа с UI, запуск асинхронных операций на других потоках и применение их результата, системные вызовы. Этот потом должен быть загружен как можно меньше, так как в него попадают все взаимодействия пользователя с экраном
@konstantinchernyaev3011
@konstantinchernyaev3011 2 года назад
2:53 2 и 4 одинаковые вроде
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Ага, проверю. Спасибо
@Chernov1984
@Chernov1984 2 года назад
+
Далее
Koin в Android на практике c MVVM
28:08
Просмотров 23 тыс.