Robot
Складчик
- #1
[Startandroid] Kotlin [Дмитрий Виноградов]
- Ссылка на картинку
Почему Котлин
Мое знакомство с Котлин началось на Google IO 17. Уже тогда стало понятно, что имеет смысл, как минимум, обратить на этот язык внимание. А еще лучше - изучить его. Я потратил пару недель на официальные доки и примеры, чтобы усвоить основы. А затем периодически почитывал статьи с medium, чтобы разобраться в более сложных вещах. Спустя полгода я без особых проблем влился в новый проект на Котлине. И вот уже два года я пишу только на нем.
Гугл официально признал Котлин, использует его для примеров в документации, создает курсы и codelabs по нему, встраивает его поддержку в свои библиотеки и фреймворки. Статьи на medium.com уже практически все с примерами на Котлин. Ну и в вакансиях он встречается все чаще
В общем, как мне кажется, вопрос "Изучать ли Котлин?" уже нет смысла обсуждать.
О чем курс
Сразу скажу, что курс не для полных новичков. На официальном сайте Котлин есть хорошая документация и инструменты, чтобы изучить и попрактиковать основы. Кроме этого есть куча учебной литературы для начинающих. Поэтому я решил рассматривать только темы, понимание которых может оказаться сложным. Это такие темы, как Coroutines, DSL, Inline functions, Operator overloading, Delegated properties и прочие непростые штуки.
Соответственно, для лучшего понимания курса лучше уже иметь хотя бы небольшой опыт работы с Котлин. Так будет легче понять материал.
Первой темой курса будут корутины. Я планирую рассмотреть следующие вопросы:
- почему suspend функции не блокируют поток
- как создать suspend функцию
- что такое Continuation, Job, Scope, корутина, диспетчер
- что происходит внутри билдеров
- чем билдеры отличаются друг от друга
- как изнутри работает связь между родительской и дочерней корутиной
- как происходит обработка ошибок
- как использовать корутины в Android
По мере написания курса буду обновлять этот список.
Содержание курса
Урок 1. Корутины. Введение.
В этом уроке начнем разбираться, что такое корутина и suspend функция.
Урок 2. Корутины. Continuation
В этом уроке разберем, что такое Continuation и как suspend функция приостанавливает код, не блокируя поток.
Урок 3. Корутины. Suspend функции
В этом уроке подробно разберем как создать suspend функции. Также рассмотрим, можно ли блокировать поток, как корутина может потеряться и зачем нужно слово suspend.
Урок 4. Корутины. Continuation, возврат значений.
В этом уроке рассмотрим более подробно, как Continuation обрабатывает ответ от suspend функций. А также, как корутина может вернуть какое-либо значение, как результат своей работы.
Урок 5. Корутины. Suspend функции изнутри.
В этом уроке разбираем, как работает suspend функция изнутри. Как она может вернуть значение сразу или после асинхронной работы.
Урок 6. Корутины. Job.
В этом уроке начинаем разбираться, что из себя представляет корутина. Из каких объектов она состоит и что происходит во время ее выполнения.
Урок 7. Корутины. Scope.
В этом уроке рассмотрим, что такое Scope и как создать его самый простой вариант.
Урок 8. Корутины. Отмена.
В этом уроке запускаем и отменяем корутины. Проверяем, как корутины влияют на основной поток.
Урок 9. Корутины. Билдеры launch и async.
В этом уроке рассмотрим билдеры launch и async. Как ведут себя вложенные корутины. Как дождаться окончания работы корутины, и как получить результат этой работы. Как создать отложенную корутину и запустить ее позже. Как распараллеливать задачи с помощью корутин.
Урок 10. Корутины. Context.
В этом уроке разбираемся с Context. Какие его элементы используются по умолчанию. Как создавать свой элемент. Как происходит передача элементов в контекст создаваемой корутины.
Урок 11. Корутины. Dispatcher.
В этом уроке рассмотрим основные виды диспетчеров. Также поговорим о том, что происходит под капотом корутин при использовании диспетчера.
Урок 12. Корутины. Связь между родительской и дочерней корутиной.
В этом уроке разбираемся, как создается дочерняя корутина. Рассмотрим, как формируется ее контекст, и как работает ее связь с родительской корутиной.
Урок 13. Корутины. Обработка исключений.
В этом уроке рассмотрим как можно обработать исключения, возникающие в корутине. Разберем, что происходит под капотом и как работает CoroutineExceptionHandler.
Урок 14. Корутины. Обработка исключений. Вложенные корутины.
В этом уроке продолжаем обсуждать обработку исключений на примере вложенных корутин.
Урок 15. Корутины. Обработка исключений. Async, suspend.
В этом уроке разбираемся к чему приводят исключения в async корутине и в suspend функциях.
Урок 16. Корутины. Отмена - это ошибка.
В этом уроке обсуждаем как работает отмена корутин под капотом.
Урок 17. Корутины. coroutineScope, supervisorScope, withContext, runBlocking.
В этом уроке обсуждаем функции coroutineScope, supervisorScope, withContext, runBlocking.
Урок 18. Корутины. Каналы.
В этом уроке разбираемся как работают каналы. Что под капотом, закрытие и отмена канала, буфер, produce, consume, broadcast.
Урок 19. Корутины. Flow.
В этом уроке разбираемся что такое Flow, как он работает под капотом и чем отличается от каналов.
Урок 20. Корутины. Flow. Билдеры и простые операторы.
В этом уроке рассмотрим способы создания Flow, простые операторы и создание своих операторов.
Урок 21. Корутины. Flow. Операторы channelFlow, flowOn, buffer, produceIn.
В этом уроке рассматриваем операторы channelFlow, flowOn, buffer, produceIn.
Урок 22. Корутины. Flow. Ошибка, отмена, повтор.
В этом уроке рассматриваем операторы catch, retry, retryWhen и возможность отмены Flow.
Урок 23. Корутины. Практика. Scope, LiveData.
В этом уроке рассматриваем билдер liveData и операторы для получения scope: viewModelScope, lifecycleScope, MainScope.
Урок 24. Корутины. Практика. Retrofit.
В этом уроке рассматриваем интеграцию корутин в Retrofit.
Урок 25. Корутины. Практика. Room
В этом уроке рассматриваем интеграцию корутин в Room.
Урок 26. Корутины. Практика. Примеры использования.
В этом уроке используем корутины в несложных примерах с репозиторием и UseCase
Урок 27. Корутины. Практика. Параллельная работа.
В этом уроке мы вызываем suspend функции параллельно, а не последовательно.
Урок 28. Корутины. Flow. SharedFlow и StateFlow.
В этом уроке подробно разбираем что такое SharedFlow и StateFlow.
Мое знакомство с Котлин началось на Google IO 17. Уже тогда стало понятно, что имеет смысл, как минимум, обратить на этот язык внимание. А еще лучше - изучить его. Я потратил пару недель на официальные доки и примеры, чтобы усвоить основы. А затем периодически почитывал статьи с medium, чтобы разобраться в более сложных вещах. Спустя полгода я без особых проблем влился в новый проект на Котлине. И вот уже два года я пишу только на нем.
Гугл официально признал Котлин, использует его для примеров в документации, создает курсы и codelabs по нему, встраивает его поддержку в свои библиотеки и фреймворки. Статьи на medium.com уже практически все с примерами на Котлин. Ну и в вакансиях он встречается все чаще
В общем, как мне кажется, вопрос "Изучать ли Котлин?" уже нет смысла обсуждать.
О чем курс
Сразу скажу, что курс не для полных новичков. На официальном сайте Котлин есть хорошая документация и инструменты, чтобы изучить и попрактиковать основы. Кроме этого есть куча учебной литературы для начинающих. Поэтому я решил рассматривать только темы, понимание которых может оказаться сложным. Это такие темы, как Coroutines, DSL, Inline functions, Operator overloading, Delegated properties и прочие непростые штуки.
Соответственно, для лучшего понимания курса лучше уже иметь хотя бы небольшой опыт работы с Котлин. Так будет легче понять материал.
Первой темой курса будут корутины. Я планирую рассмотреть следующие вопросы:
- почему suspend функции не блокируют поток
- как создать suspend функцию
- что такое Continuation, Job, Scope, корутина, диспетчер
- что происходит внутри билдеров
- чем билдеры отличаются друг от друга
- как изнутри работает связь между родительской и дочерней корутиной
- как происходит обработка ошибок
- как использовать корутины в Android
По мере написания курса буду обновлять этот список.
Содержание курса
Урок 1. Корутины. Введение.
В этом уроке начнем разбираться, что такое корутина и suspend функция.
Урок 2. Корутины. Continuation
В этом уроке разберем, что такое Continuation и как suspend функция приостанавливает код, не блокируя поток.
Урок 3. Корутины. Suspend функции
В этом уроке подробно разберем как создать suspend функции. Также рассмотрим, можно ли блокировать поток, как корутина может потеряться и зачем нужно слово suspend.
Урок 4. Корутины. Continuation, возврат значений.
В этом уроке рассмотрим более подробно, как Continuation обрабатывает ответ от suspend функций. А также, как корутина может вернуть какое-либо значение, как результат своей работы.
Урок 5. Корутины. Suspend функции изнутри.
В этом уроке разбираем, как работает suspend функция изнутри. Как она может вернуть значение сразу или после асинхронной работы.
Урок 6. Корутины. Job.
В этом уроке начинаем разбираться, что из себя представляет корутина. Из каких объектов она состоит и что происходит во время ее выполнения.
Урок 7. Корутины. Scope.
В этом уроке рассмотрим, что такое Scope и как создать его самый простой вариант.
Урок 8. Корутины. Отмена.
В этом уроке запускаем и отменяем корутины. Проверяем, как корутины влияют на основной поток.
Урок 9. Корутины. Билдеры launch и async.
В этом уроке рассмотрим билдеры launch и async. Как ведут себя вложенные корутины. Как дождаться окончания работы корутины, и как получить результат этой работы. Как создать отложенную корутину и запустить ее позже. Как распараллеливать задачи с помощью корутин.
Урок 10. Корутины. Context.
В этом уроке разбираемся с Context. Какие его элементы используются по умолчанию. Как создавать свой элемент. Как происходит передача элементов в контекст создаваемой корутины.
Урок 11. Корутины. Dispatcher.
В этом уроке рассмотрим основные виды диспетчеров. Также поговорим о том, что происходит под капотом корутин при использовании диспетчера.
Урок 12. Корутины. Связь между родительской и дочерней корутиной.
В этом уроке разбираемся, как создается дочерняя корутина. Рассмотрим, как формируется ее контекст, и как работает ее связь с родительской корутиной.
Урок 13. Корутины. Обработка исключений.
В этом уроке рассмотрим как можно обработать исключения, возникающие в корутине. Разберем, что происходит под капотом и как работает CoroutineExceptionHandler.
Урок 14. Корутины. Обработка исключений. Вложенные корутины.
В этом уроке продолжаем обсуждать обработку исключений на примере вложенных корутин.
Урок 15. Корутины. Обработка исключений. Async, suspend.
В этом уроке разбираемся к чему приводят исключения в async корутине и в suspend функциях.
Урок 16. Корутины. Отмена - это ошибка.
В этом уроке обсуждаем как работает отмена корутин под капотом.
Урок 17. Корутины. coroutineScope, supervisorScope, withContext, runBlocking.
В этом уроке обсуждаем функции coroutineScope, supervisorScope, withContext, runBlocking.
Урок 18. Корутины. Каналы.
В этом уроке разбираемся как работают каналы. Что под капотом, закрытие и отмена канала, буфер, produce, consume, broadcast.
Урок 19. Корутины. Flow.
В этом уроке разбираемся что такое Flow, как он работает под капотом и чем отличается от каналов.
Урок 20. Корутины. Flow. Билдеры и простые операторы.
В этом уроке рассмотрим способы создания Flow, простые операторы и создание своих операторов.
Урок 21. Корутины. Flow. Операторы channelFlow, flowOn, buffer, produceIn.
В этом уроке рассматриваем операторы channelFlow, flowOn, buffer, produceIn.
Урок 22. Корутины. Flow. Ошибка, отмена, повтор.
В этом уроке рассматриваем операторы catch, retry, retryWhen и возможность отмены Flow.
Урок 23. Корутины. Практика. Scope, LiveData.
В этом уроке рассматриваем билдер liveData и операторы для получения scope: viewModelScope, lifecycleScope, MainScope.
Урок 24. Корутины. Практика. Retrofit.
В этом уроке рассматриваем интеграцию корутин в Retrofit.
Урок 25. Корутины. Практика. Room
В этом уроке рассматриваем интеграцию корутин в Room.
Урок 26. Корутины. Практика. Примеры использования.
В этом уроке используем корутины в несложных примерах с репозиторием и UseCase
Урок 27. Корутины. Практика. Параллельная работа.
В этом уроке мы вызываем suspend функции параллельно, а не последовательно.
Урок 28. Корутины. Flow. SharedFlow и StateFlow.
В этом уроке подробно разбираем что такое SharedFlow и StateFlow.
Зарегистрируйтесь
, чтобы посмотреть скрытый авторский контент.