#ArchitectureComponent #ViewModel #Lifecycle #Coroutines
Lifecycle 2.2.0
Много новых интеграций с Kotlin Coroutines:
👉 Конвертация
👉 liveData { } - генератор значений с помощью Coroutine, которые доставляются через
👉 LifecycleCoroutineScope - специальный
👉 suspend функции, связанные с
Но помимо этого
👉 Теперь вместо
👉 Gradle Incremental Annotation Processor: Теперь вместо аннотирования методов, который должны вызываться на методы жизненного цикла, с помощью
Lifecycle 2.2.0
Много новых интеграций с Kotlin Coroutines:
👉 Конвертация
Flow <-> LiveData👉 liveData { } - генератор значений с помощью Coroutine, которые доставляются через
LiveData👉 LifecycleCoroutineScope - специальный
CoroutineScope, связанный с Lifecycle. Он позволяет запускать Coroutine, когда Lifecycle достигнет определенного состояния с помощью launchWhenCreated, launchWhenResumed и launchWhenStarted👉 suspend функции, связанные с
LifecycleOwner и Lifecycle, которые позволяют дождаться заданного состояния Lifecycle: whenCreated, whenStarted, whenResumed, whenStateAtLeast (только для Lifecycle)Но помимо этого
👉 Теперь вместо
ViewModelProviders.of() надо создавать ViewModelProvider через конструктор👉 Gradle Incremental Annotation Processor: Теперь вместо аннотирования методов, который должны вызываться на методы жизненного цикла, с помощью
@OnLifecycleEvent используйте DefautLifecycleObserver.#Jetpack #ArhitectureComponents #WorkManager
WorkManager 2.3.0
Появилась возможность задавать системе, что выполняемая операция важна, и что процесс должен оставаться живым как можно дольше во время выполнения. Работает механизм поверх Foreground Service. Используйте setForegroundAsync
Также появилась возможность отображать прогресс выполнения задачи с помощью setProgressAsync
WorkManager 2.3.0
Появилась возможность задавать системе, что выполняемая операция важна, и что процесс должен оставаться живым как можно дольше во время выполнения. Работает механизм поверх Foreground Service. Используйте setForegroundAsync
Также появилась возможность отображать прогресс выполнения задачи с помощью setProgressAsync
#Jetpack #Navigation
Navigation 2.2.0
👉 Возможность получения элемента из back stack по id элемента из графа. Используйте getBackStackEntry
👉 Параметры в Deep Link теперь могут быть в любом порядке
👉 Появилась поддержка опциональных параметров в Deep Link
👉 Улучшение работы анимаций
Navigation 2.2.0
👉 Возможность получения элемента из back stack по id элемента из графа. Используйте getBackStackEntry
👉 Параметры в Deep Link теперь могут быть в любом порядке
👉 Появилась поддержка опциональных параметров в Deep Link
👉 Улучшение работы анимаций
Стоит ли делать обзоры обновлений Jetpack в формате t.me/android_broadcast/1397 ?
Final Results
63%
Да, несколько постов тредом
26%
Да, все в одном посте
7%
Нет, выноси на отдельный ресурс и пости ссылку
3%
Не стоит делать вообще такого
2%
Другое
#Gradle #Performance #Modularization
O(1) Android build time at Tiki
Разработчики подходят с разных сторон в попытке оптимизировать Gradle сборку и сделать работу быстрее. В Tiki сделал довольно интересно решение - подключение только одного feature модуля с которым сейчас работает разработчик, что позволил сократить время разработки.
Как это реализовать и каким образом должны подключаться модули вы можете найти в статье.
O(1) Android build time at Tiki
Разработчики подходят с разных сторон в попытке оптимизировать Gradle сборку и сделать работу быстрее. В Tiki сделал довольно интересно решение - подключение только одного feature модуля с которым сейчас работает разработчик, что позволил сократить время разработки.
Как это реализовать и каким образом должны подключаться модули вы можете найти в статье.
Medium
O(1) Android build time at Tiki
This is how we reduce half of our build time.
#Internship #Moscow
Весенняя стажировка (2020) для мобильных разработчиков в Redmadrobot
Компания Redmadrobot запуска стажировку для Android и iOS разработчиков. Стажировка призвана не научить вас написать первое приложение под ваш смартфон, а погрузиться глубже на основе базиса знаний.
Что обещают:
👉 Самые актуальные навыки для разработчика в 2020 году
👉 Материалы из проектов Redmadrobot
👉 Две рабочие группы: iOS и Android
👉 Очные вечерние занятия на Swift/Kotlin три раза в неделю с 18:30 до 20:30
👉 Интересные и реально сложные домашние задания (мы предупредили!)
👉 Знакомство с проектными бизнес-процессами и внутренней кухней компании
До конца дойдут только самые упорные и прокаченные на новый уровень разработчики, а лучшие получат еще и предложение от Redmadrobot. Самое главное - это возможность получить знания от профессионалов своего дела.
Весенняя стажировка (2020) для мобильных разработчиков в Redmadrobot
Компания Redmadrobot запуска стажировку для Android и iOS разработчиков. Стажировка призвана не научить вас написать первое приложение под ваш смартфон, а погрузиться глубже на основе базиса знаний.
Что обещают:
👉 Самые актуальные навыки для разработчика в 2020 году
👉 Материалы из проектов Redmadrobot
👉 Две рабочие группы: iOS и Android
👉 Очные вечерние занятия на Swift/Kotlin три раза в неделю с 18:30 до 20:30
👉 Интересные и реально сложные домашние задания (мы предупредили!)
👉 Знакомство с проектными бизнес-процессами и внутренней кухней компании
До конца дойдут только самые упорные и прокаченные на новый уровень разработчики, а лучшие получат еще и предложение от Redmadrobot. Самое главное - это возможность получить знания от профессионалов своего дела.
Хабр
Весенняя стажировка для мобильных разработчиков в Redmadrobot
Привет, Хабр, мы запускаем шестую, на этот раз весеннюю, стажировку для мобильных разработчиков в московском офисе Redmadrobot. Всех, кто пройдёт строгий желез...
#CustomView
Documenting your XML attributes – Custom View
Многим приходилось сталкиваться с View не из Android SDK или AndroidX, а также писать их самостоятельно. И самое обидное порой, что разработчик может добавить множество XML атрибутов для кастомизации View, но не задокументировать их. Зачастую в таком случае единственным источником правды становится репозиторий проекта на GitHub, а то и вовсе исходник.
В статье разбирается как задокументировать атрибуты View и как это улучшит разработку.
Documenting your XML attributes – Custom View
Многим приходилось сталкиваться с View не из Android SDK или AndroidX, а также писать их самостоятельно. И самое обидное порой, что разработчик может добавить множество XML атрибутов для кастомизации View, но не задокументировать их. Зачастую в таком случае единственным источником правды становится репозиторий проекта на GitHub, а то и вовсе исходник.
В статье разбирается как задокументировать атрибуты View и как это улучшит разработку.
Giorgosneokleous
Documenting your XML attributes – Custom View
Learn how to document your XML attributes for your Custom Views.
#Coroutines #Flow #RxJava
From RxJava 2 to Kotlin Flow: Threading
В статье автор проводит сравнение работы по управлению Java потоками выполнения в
From RxJava 2 to Kotlin Flow: Threading
Kotlin Flow - это реализация реактивных стримов на основе Coroutine, и естественно Android разработчики будут сравнивать ее к тому, чему уже привыкли - RxJava 2.В статье автор проводит сравнение работы по управлению Java потоками выполнения в
RxJava Obserable и Coroutine Flow, а также миграции с первого подхода на последний.Medium
From RxJava 2 to Kotlin Flow: Threading
Comparing threading in RxJava 2 and Kotlin Flow
#WebView #DarkTheme
Enabling dark theme in Android WebViews
Темная тема - крутая фича, но проблемным местом ее интеграции оставалось WebView, где контент отрисовывается независимо от приложения с чем адаптация этого виджета для поддержки темной темы становилась сложнее.
Следующая версия библиотеки androidx.webkit 1.2.0 (пока достигла статуса alpha01) добавляет возможности по работе с темной темой
Enabling dark theme in Android WebViews
Темная тема - крутая фича, но проблемным местом ее интеграции оставалось WebView, где контент отрисовывается независимо от приложения с чем адаптация этого виджета для поддержки темной темы становилась сложнее.
Следующая версия библиотеки androidx.webkit 1.2.0 (пока достигла статуса alpha01) добавляет возможности по работе с темной темой
Joe Birch
Enabling dark theme in Android WebViews
So your apps just implemented a shiny new dark theme and it's looking 👌 And if you haven't yet, maybe it's in the pipeline for you to work on sometime in the future! There are lots of benefits to having a dark theme in your application, and having it consistent…
#DevFest
GDG DevFest On Demand
Google собрала видеозаписи всех докладов сезона DevFest 2019 года со всех уголков мира и по всем темам в одном месте
GDG DevFest On Demand
Google собрала видеозаписи всех докладов сезона DevFest 2019 года со всех уголков мира и по всем темам в одном месте
#UI #ServerDrivenUi
Dynamic screens using server-driven UI in Android
Не любой контент получится отобразить простым путём маппинга модели на UI. Порой описание элементов могут иметь множество полей разного типа и меняться в зависимости от типа элемента. Как же решать эту задачу?
Построить одну универсальную View и скрывать/показывать поля? Может сработать, но решение не гибкое и код станет кучей
В статье рассматривается пример реализации описания формата для SDUI и различные фреймворки, которые позволяют отображать его: Litho от Facebook, Epoxy от Airbnb и другие менее известные
Dynamic screens using server-driven UI in Android
Не любой контент получится отобразить простым путём маппинга модели на UI. Порой описание элементов могут иметь множество полей разного типа и меняться в зависимости от типа элемента. Как же решать эту задачу?
Построить одну универсальную View и скрывать/показывать поля? Может сработать, но решение не гибкое и код станет кучей
if...else. На помощь может прийти решение Server Driven UI (SDUI), когда сервер управляет тем, что показать и как. Нечто подобное HTML, но SDUI - нативное и более ограничено в возможностях.В статье рассматривается пример реализации описания формата для SDUI и различные фреймворки, которые позволяют отображать его: Litho от Facebook, Epoxy от Airbnb и другие менее известные
Medium
Dynamic screens using server-driven UI in Android
Understanding the concept of server-driven UI for native mobile development
This media is not supported in your browser
VIEW IN TELEGRAM
Анонсирована Kotlin Conf 2020! Она пройдет в Канаде, 9 - 11 сентября.
Грустно, добраться туда далековато и непросто. Придется пропустить этот год и ждать возвращения конференции в Европу, а может и Россию.
Грустно, добраться туда далековато и непросто. Придется пропустить этот год и ждать возвращения конференции в Европу, а может и Россию.
#ViewModel #ArchitectureComponent #UnderTheHood
Android ViewModel. How it works
Android Architecture Components - довольно популярное решение на сегодня в Android разработке. Понимание механизмов работы его компонентов поможет эффективнее использовать его и подать идеи как реализовать другой функционал с использованием аналогичных механизмов.
В статье разбирается:
👉 ViewModelProvider
👉 ViewModelStore
👉 ViewModelStoreOwner
👉 Эволюция ViewModel: 2017, 2018, 2019
👉 Где хранится ViewModel чтобы переживать пересоздания
Android ViewModel. How it works
Android Architecture Components - довольно популярное решение на сегодня в Android разработке. Понимание механизмов работы его компонентов поможет эффективнее использовать его и подать идеи как реализовать другой функционал с использованием аналогичных механизмов.
В статье разбирается:
👉 ViewModelProvider
👉 ViewModelStore
👉 ViewModelStoreOwner
👉 Эволюция ViewModel: 2017, 2018, 2019
👉 Где хранится ViewModel чтобы переживать пересоздания
Activity/Fragment при смене конфигурацииMedium
Android ViewModel. How it works.
Hello everybody.
#Animation
Change Theme Dynamically with Circular Reveal Animation on Android
Разбор того, как работает анимация смены темы в Telegram
Change Theme Dynamically with Circular Reveal Animation on Android
Разбор того, как работает анимация смены темы в Telegram
#Dagger #DependencyInjection
Вышел Dagger 2.26
Новая версия популярного DI фреймворка увидела свет. Она не привнесла значительных изменений, но постаралась сделать библиотеку лучше:
👉 Миграция dagger-android на AndroidX. Версия на Android Support Library также доступна
👉 Исправление багов инкрементальной компиляции
👉 Удаление использование не Android API из Guava
👉 Breaking changes: companion object больше нельзя объявлять как
Вышел Dagger 2.26
Новая версия популярного DI фреймворка увидела свет. Она не привнесла значительных изменений, но постаралась сделать библиотеку лучше:
👉 Миграция dagger-android на AndroidX. Версия на Android Support Library также доступна
👉 Исправление багов инкрементальной компиляции
👉 Удаление использование не Android API из Guava
👉 Breaking changes: companion object больше нельзя объявлять как
@Module для Dagger Component. Добавление аннотации необходимо только на внешнем классе.GitHub
Release Dagger 2.26 · google/dagger
What's new
Fix #1700: Remove usages of non-Android Guava APIs. (0925e8f)
Fix #1720: Fix incremental dagger-android-processor in kapt when using dagger.android.experimentalUseStringKeys. (6a0ce...
Fix #1700: Remove usages of non-Android Guava APIs. (0925e8f)
Fix #1720: Fix incremental dagger-android-processor in kapt when using dagger.android.experimentalUseStringKeys. (6a0ce...
#Kotlin #CodeQuality
Вышел Detekt 1.5.0
В новой версии статического анализатора Kotlin кода вы найдёте:
👉 Detekt теперь по умолчанию «тихий». Это значит, что в выводе будут появляться только сообщения об найденных проблемах
👉 Detekt по умолчанию будут помечать сборку как «failed» если найдена хотя бы одна проблема
👉 Улучшение HTML отчетов
👉 Новое правило
👉 Новое правило
👉 Исправление багов
Вышел Detekt 1.5.0
В новой версии статического анализатора Kotlin кода вы найдёте:
👉 Detekt теперь по умолчанию «тихий». Это значит, что в выводе будут появляться только сообщения об найденных проблемах
👉 Detekt по умолчанию будут помечать сборку как «failed» если найдена хотя бы одна проблема
👉 Улучшение HTML отчетов
👉 Новое правило
ExplicitCollectionElementAccessMethod - замена вызова get() и set() у List и Map на синтаксис через [] 👉 Новое правило
ForbiddenMethod - возможность задать список методов, запрещенных к вызову👉 Исправление багов
#Coroutines
Coroutines and Java Synchronization Don't Mix
Kotlin Coroutine - это не только другой стиль написания асинхронного кода (по сравнению с Java Thread), но и отличия в реализации использования Java потоков под капотом. Coroutine реализованы на основе continuation-passing style. Это ведёт к тому, что не все средства синхронизации к которым привыкли разработчики с Java будут работать с Kotlin Coroutines.
В статье разбирается особенность работы
Coroutines and Java Synchronization Don't Mix
Kotlin Coroutine - это не только другой стиль написания асинхронного кода (по сравнению с Java Thread), но и отличия в реализации использования Java потоков под капотом. Coroutine реализованы на основе continuation-passing style. Это ведёт к тому, что не все средства синхронизации к которым привыкли разработчики с Java будут работать с Kotlin Coroutines.
В статье разбирается особенность работы
synchronized и почему не стоит его использовать с Coroutine.Dan Lew Codes
Coroutines and Java Synchronization Don't Mix
Suppose you've got a critical section
[https://en.wikipedia.org/wiki/Critical_section] of code, meaning only one
process should execute it at a time.
In the Java world, one solution is to slap synchronized on the method and call
it a day. In Kotlin, we use…
[https://en.wikipedia.org/wiki/Critical_section] of code, meaning only one
process should execute it at a time.
In the Java world, one solution is to slap synchronized on the method and call
it a day. In Kotlin, we use…
#Text
A simple implementation of rounded background for text in Android
Механизм Span - мощный инструмент для кастомизации текста. В статье разбирается пример как сделать фон текста с закруглением и особенности при работе с многострочным текстом
A simple implementation of rounded background for text in Android
Механизм Span - мощный инструмент для кастомизации текста. В статье разбирается пример как сделать фон текста с закруглением и особенности при работе с многострочным текстом
Medium
Simple implementation of rounded background for text in Android
It’s simple implementation of text background with rounded corners for Android
#Kotlin #Binary #Compatibility #Library
Бинарная совместимость Reaktive: как мы её обеспечиваем
Разработка библиотек - не самое простое занятие. Ты не можешь получить отчет об ошибке в Crashlytics, твои пользователи (программисты) не всегда могут оставить внятный фидбек, а еще тебе надо обеспечивать обратную совместимость.
Обратную совместимость обычно разделяют на 2 вида: API и Binary. Первая довольная проста - все что написано на старой версии библиотеки, должно запускаться и на новой.
С Binary совместимость все сложнее. В статье один из авторов библиотеки Reaktive разбирает, что именно такое Binary совместимость и как ее обеспечивают на примере этой библиотеки.
Бинарная совместимость Reaktive: как мы её обеспечиваем
Разработка библиотек - не самое простое занятие. Ты не можешь получить отчет об ошибке в Crashlytics, твои пользователи (программисты) не всегда могут оставить внятный фидбек, а еще тебе надо обеспечивать обратную совместимость.
Обратную совместимость обычно разделяют на 2 вида: API и Binary. Первая довольная проста - все что написано на старой версии библиотеки, должно запускаться и на новой.
С Binary совместимость все сложнее. В статье один из авторов библиотеки Reaktive разбирает, что именно такое Binary совместимость и как ее обеспечивают на примере этой библиотеки.
Хабр
Бинарная совместимость Reaktive: как мы её обеспечиваем
Привет! Меня зовут Юрий Влад, я Android-разработчик в компании Badoo и принимаю участие в создании библиотеки Reaktive — Reactive Extensions на чистом Kotlin. Любая библиотека должна по...
#Internship #НеРеклама
Летняя стажировка в Яндекс
Стартовал набор на летнюю стажировку в Яндекс. Направлений стажировки много:
👉 мобильная разработка (Android, iOS)
👉 бэкенд-разработка
👉 фронтенд-разработка
👉 машинное обучение
👉 аналитика
Участников ждут:
👉 от трёх до шести месяцев оплачиваемой работы бок о бок с ментором,
👉 только реальные задачи по улучшению продукта,
👉 приятное место, где работают увлеченные люди и проходят интересные мероприятия
Прием заявок заканчивается 31 мая 2020. Пройти стажировку можно в разных локациях или вам оплатят дорогу и проживание в хостеле
Ответы на популярные вопросы о стажировке здесь
Рекомендую всем попробовать попасть в программу Яндекс. Я помню как устроился на работу в Яндекс в Минске и мой уровень пошел в гору невероятными темпами, потому что я работал с очень сильными специалистами, у которых я учился изо дня в день.
Летняя стажировка в Яндекс
Стартовал набор на летнюю стажировку в Яндекс. Направлений стажировки много:
👉 мобильная разработка (Android, iOS)
👉 бэкенд-разработка
👉 фронтенд-разработка
👉 машинное обучение
👉 аналитика
Участников ждут:
👉 от трёх до шести месяцев оплачиваемой работы бок о бок с ментором,
👉 только реальные задачи по улучшению продукта,
👉 приятное место, где работают увлеченные люди и проходят интересные мероприятия
Прием заявок заканчивается 31 мая 2020. Пройти стажировку можно в разных локациях или вам оплатят дорогу и проживание в хостеле
Ответы на популярные вопросы о стажировке здесь
Рекомендую всем попробовать попасть в программу Яндекс. Я помню как устроился на работу в Яндекс в Минске и мой уровень пошел в гору невероятными темпами, потому что я работал с очень сильными специалистами, у которых я учился изо дня в день.
Young&&Yandex ― старт карьеры в Яндексе
Экосистема стажировок и образовательных проектов — можно попробовать себя в IT, прокачать навыки и начать работать в Яндексе
#Kotlin #Kronos
Kronos-Android: Easy NTP
Библиотека для получения реального времени с сервера и его синхронизацией. Позволит избежать ситуаций, когда пользователь меняет время на устройстве для получения бонусов 😁
Kronos-Android: Easy NTP
Библиотека для получения реального времени с сервера и его синхронизацией. Позволит избежать ситуаций, когда пользователь меняет время на устройстве для получения бонусов 😁
Medium
Kronos-Android: Easy NTP
A Kotlin open source library for sane time