#Coroutine
Coroutine Context and Scope от Романа Елизарова
CoroutineScope и CoroutineContext очень похожие концепты, CoroutineScope содержит одно единственное свойство - coroutineContext.
В своей статье Роман Елизаров показывает зачем одним и тем же сущностям порой пристают разные имена, чтобы явно продемонстрировать их разные цели применения.
Coroutine Context and Scope от Романа Елизарова
CoroutineScope и CoroutineContext очень похожие концепты, CoroutineScope содержит одно единственное свойство - coroutineContext.
В своей статье Роман Елизаров показывает зачем одним и тем же сущностям порой пристают разные имена, чтобы явно продемонстрировать их разные цели применения.
Medium
Coroutine Context and Scope
Kotlin Coroutines have a context. There is a also a concept of coroutine scope that looks very much like a context. What’s the difference?
👍1
#Rx #Kotlin #Library
Reaktive — Настоящий RxKotlin на чистом Kotlin
Как бы я не любил #Coroutine, Rx подход решил много проблем в свое время: callback hell, предоставил удобный стиль работы с потоками данных (функциональный) и упростил работу с многопоточными приложениями.
Я уверен, что большинство Android программистов знают #Rx подход по библиотеки RxJava, но она о Java 😞. Написали RxKotlin, но она является набором расширений для #RxJava и работает только c Kotlin/JVM.
В сообществе уже давно обсуждали написание Rx библиотеки на чистом Kotlin. Это бы дало:
👉 Поддержку работы на множестве платформ (Kotlin Multiplatform Projects)
👉 Учет системы типов Kotlin, а значит поддержку null safety
👉 Корректную поддержку Generic из Kotlin
👉 Убрать зависимости от каких либо сторонних Rx библиотек
👉 Сделать архитектуру и API с использованием всех возможностей языка Kotlin
Ребята из Badoo решили не ждать и написать решение сами. Встречайте библиотеку Reaktive. Библиотека пока находится в Alpha статусе (возможны изменения API) и разработка новых фичей продолжается.
Reaktive — Настоящий RxKotlin на чистом Kotlin
Как бы я не любил #Coroutine, Rx подход решил много проблем в свое время: callback hell, предоставил удобный стиль работы с потоками данных (функциональный) и упростил работу с многопоточными приложениями.
Я уверен, что большинство Android программистов знают #Rx подход по библиотеки RxJava, но она о Java 😞. Написали RxKotlin, но она является набором расширений для #RxJava и работает только c Kotlin/JVM.
В сообществе уже давно обсуждали написание Rx библиотеки на чистом Kotlin. Это бы дало:
👉 Поддержку работы на множестве платформ (Kotlin Multiplatform Projects)
👉 Учет системы типов Kotlin, а значит поддержку null safety
👉 Корректную поддержку Generic из Kotlin
👉 Убрать зависимости от каких либо сторонних Rx библиотек
👉 Сделать архитектуру и API с использованием всех возможностей языка Kotlin
Ребята из Badoo решили не ждать и написать решение сами. Встречайте библиотеку Reaktive. Библиотека пока находится в Alpha статусе (возможны изменения API) и разработка новых фичей продолжается.
👍1
#Coroutine
В последнее время я нахожу много материалов по Kotlin Coroutine. Думаю, что это связано с тем что Kotlin Coroutine активно пропагандируются командой Android для решения асинхронных задач и то что Flow - это способ решения задач для обработки потоков данных (замена RxJava). С одной стороны я понимаю, что пропаганда этого подхода - закономерный шаг при лозунге «Kotlin First» в Android. Но что там с альтернативами? На подходе RxJava 3, есть Reaktive - Rx на чистом Kotlin, возможно кто-то строит асинхронные запросы на основе стандартного API в Android SDK/JDK.
Не могу скрывать, что я и сам придерживаюсь подхода Kotlin Coroutine. Тяну ли я Coroutine в свои проекты - регулярно! Я люблю поделиться своим опытом или рассказать о результатах интересных исследований, поэтому выступаю с докладами, в рамках которых я имею возможность проводить краткие опросы. Результаты опроса «Используете ли вы Coroutine?» меня печалят - большая часть зала пользуется RxJava для асинхронных задач.
К чему я все это вёл - дайте свой фидбек почему так происходит и я постараюсь исправить ситуацию. Заказчика вашего переубедить я не смогу, но помочь с повышением уровня знаний - запросто.
Присоединяетесь к обсуждению в @android_broadcast_discussions
В последнее время я нахожу много материалов по Kotlin Coroutine. Думаю, что это связано с тем что Kotlin Coroutine активно пропагандируются командой Android для решения асинхронных задач и то что Flow - это способ решения задач для обработки потоков данных (замена RxJava). С одной стороны я понимаю, что пропаганда этого подхода - закономерный шаг при лозунге «Kotlin First» в Android. Но что там с альтернативами? На подходе RxJava 3, есть Reaktive - Rx на чистом Kotlin, возможно кто-то строит асинхронные запросы на основе стандартного API в Android SDK/JDK.
Не могу скрывать, что я и сам придерживаюсь подхода Kotlin Coroutine. Тяну ли я Coroutine в свои проекты - регулярно! Я люблю поделиться своим опытом или рассказать о результатах интересных исследований, поэтому выступаю с докладами, в рамках которых я имею возможность проводить краткие опросы. Результаты опроса «Используете ли вы Coroutine?» меня печалят - большая часть зала пользуется RxJava для асинхронных задач.
К чему я все это вёл - дайте свой фидбек почему так происходит и я постараюсь исправить ситуацию. Заказчика вашего переубедить я не смогу, но помочь с повышением уровня знаний - запросто.
Присоединяетесь к обсуждению в @android_broadcast_discussions
#Dagger #Hilt #Coroutine
Create an application CoroutineScope using Hilt
Руководство как доставлять в зависимостях CoroutineScope, привязанный к Application, и CoroutinDispatcher-s, а также их как подменять их в тестах
Create an application CoroutineScope using Hilt
Руководство как доставлять в зависимостях CoroutineScope, привязанный к Application, и CoroutinDispatcher-s, а также их как подменять их в тестах
OkLayoutInflater - прокачанный AsyncLayoutInflter на корутинах. AsyncLayoutInflater позволяет перенести inflate layout ресурс в фоновые поток, тем самым разгрузив его от блокирующего вызова LayoutInflter.inflate на главном/UI потоке приложения. Авторы решили написать свою версию, добавив ей:
👉 Поддержка корутин
👉 Парсинг на нескольких фоновых потоках (AsyncLayoutInflater работает в одном фоновом потоке)
👉 Подружили с жизненным циклом
👉 Добавили поддержку LayoutInflater.Factory2
Авторы добились уменьшения фризов до 30% на отдельных экранах и 23% в среднем
💻 Исходный код на GitHub
#coroutine
👉 Поддержка корутин
👉 Парсинг на нескольких фоновых потоках (AsyncLayoutInflater работает в одном фоновом потоке)
👉 Подружили с жизненным циклом
👉 Добавили поддержку LayoutInflater.Factory2
Авторы добились уменьшения фризов до 30% на отдельных экранах и 23% в среднем
💻 Исходный код на GitHub
#coroutine
🤔42👍24🔥7😁1
Forwarded from Kotlin Multiplatform Broadcast
Большая статья "Kotlin Coroutines. От А до Я" (28м)
Что внутри
👉 Шпаргалка по корутинам
👉 Зачем нужны корутины?
👉 Suspend в Котлин
👉 Библиотека kotlinx.corourines
👉 Три способа войти в корутинный мир. runBlocking, CoroutineScope и suspend main
👉 Область видимости корутины. CoroutineScope и GlobalScope
👉 CoroutineContext
👉 Job и Deferred
👉 Запуск корутины
👉 Dispatchers. Основные виды диспетчеров и их применения
👉 Способы обработок ошибок
👉 Отмена корутин
👉 Создание своего пользовательского CoroutineScope
#coroutines
Что внутри
👉 Шпаргалка по корутинам
👉 Зачем нужны корутины?
👉 Suspend в Котлин
👉 Библиотека kotlinx.corourines
👉 Три способа войти в корутинный мир. runBlocking, CoroutineScope и suspend main
👉 Область видимости корутины. CoroutineScope и GlobalScope
👉 CoroutineContext
👉 Job и Deferred
👉 Запуск корутины
👉 Dispatchers. Основные виды диспетчеров и их применения
👉 Способы обработок ошибок
👉 Отмена корутин
👉 Создание своего пользовательского CoroutineScope
#coroutines
1👍58👎8❤3 1