#Dagger #ViewModel #SavedState #AssistedInject
Connecting The Dots
Описать как сделать что-то на Dagger может быть долго и непонятно, поэтому отправлю вас сразу в статью в которой описывается руководство как реализовать связку
Почему это важно изучить?
Подробнее о сохранении состояния ViewModel ➡️ здесь
Connecting The Dots
Описать как сделать что-то на Dagger может быть долго и непонятно, поэтому отправлю вас сразу в статью в которой описывается руководство как реализовать связку
ViewModel
+ SavedStateHandle
+ Dagger 2
. Почему это важно изучить?
ViewModel
не сохраняет своё состояние при пересоздании процесса, а только при изменении конфигурации, поэтому нужно использовать SavedStateHandleПодробнее о сохранении состояния ViewModel ➡️ здесь
Medium
Connecting The Dots
How to setup Dagger with ViewModel and Saved State module
#Podcast #Ask #Coroutines #UnderTheHood
8 января я, Кирилл Розов, автор канала Android Broadcast и Ильмир Усманов, разработчик компилятора Kotlin в JetBrains запишем подкаст на тему того, как обеспечивается работа Coroutine на уровне компилятора:
👉 Как работают Сoroutine под капотом
👉 Оптимизация кода компилятором
👉 Нужно ли разработчику запариваться как вызывать suspend функции определенным образом для более оптимального байт кода
👉 Как эффективнее вызывать suspend функции
👉 Coroutines в JVM/Native/JS
👉 Какие оптимизации ждут Coroutine в новом JVM Backend
👉 Дебаг Coroutine
Свои вопросы, на которые вам интересно услышать ответы, вы можете задать в Twitter комментарием на пост или мне в личку
8 января я, Кирилл Розов, автор канала Android Broadcast и Ильмир Усманов, разработчик компилятора Kotlin в JetBrains запишем подкаст на тему того, как обеспечивается работа Coroutine на уровне компилятора:
👉 Как работают Сoroutine под капотом
👉 Оптимизация кода компилятором
👉 Нужно ли разработчику запариваться как вызывать suspend функции определенным образом для более оптимального байт кода
👉 Как эффективнее вызывать suspend функции
👉 Coroutines в JVM/Native/JS
👉 Какие оптимизации ждут Coroutine в новом JVM Backend
👉 Дебаг Coroutine
Свои вопросы, на которые вам интересно услышать ответы, вы можете задать в Twitter комментарием на пост или мне в личку
#Debug
Developer Options in Android
Как можно оценить производительность вашего приложения? Стандартный способ - подключить кабелем телефон к вашему компьютеру и запустить Android Studio. Потом вы можете с помощью встроенных средств IDE выполнить проверки.
Но вышеописанный способ не является единственным. Можно воспользоваться инструментов из "Developer Options" прямо на устройстве. Там вы сможете найти:
👉 Layout Inspector - отрисовка границ View на экране
👉 Simulate Display Cutout - симуляция выреза в дисплее
👉 Изменение Minimum Width (dp)
👉 Don’t Keep Activities - уничтожение Activity когда они пропадают с экрана
👉 Profile GPU Rendering - проверка успевает ли ваш UI отрисоваться и не допустить просадки 60 FPS
👉 Strict Mode
👉 Animator duration scale/Transition animation scale - настройка воспроизведения анимации
👉 Night Mode - принудительное включение темной темы
и много много других, о которы вы можете найти все подробности в статье
Developer Options in Android
Как можно оценить производительность вашего приложения? Стандартный способ - подключить кабелем телефон к вашему компьютеру и запустить Android Studio. Потом вы можете с помощью встроенных средств IDE выполнить проверки.
Но вышеописанный способ не является единственным. Можно воспользоваться инструментов из "Developer Options" прямо на устройстве. Там вы сможете найти:
👉 Layout Inspector - отрисовка границ View на экране
👉 Simulate Display Cutout - симуляция выреза в дисплее
👉 Изменение Minimum Width (dp)
👉 Don’t Keep Activities - уничтожение Activity когда они пропадают с экрана
👉 Profile GPU Rendering - проверка успевает ли ваш UI отрисоваться и не допустить просадки 60 FPS
👉 Strict Mode
👉 Animator duration scale/Transition animation scale - настройка воспроизведения анимации
👉 Night Mode - принудительное включение темной темы
и много много других, о которы вы можете найти все подробности в статье
Medium
Developer Options in Android
Every Android developer begins their journey by enabling USB debugging from Developer options page but sometimes less curious ones miss…
#новости
Новости о подкастах и видео от Android Broadcast можно будет найти на сайте AppTractor
Подружился с проектом AppTractor, авторы которого ежедневно делятся множеством новостей, статей и библиотек из мира мобильной разработки: Android, iOS, Flutter, React Native, Xamarin, а также пишут на темы околомобильной разработки. Очень часто я нахожу интересные стать на их сайте и делюсь ими с вами.
Также AppTractor является домом для ребят из Android Dev Podcast (там можно найти их страничку).
Новости о подкастах и видео от Android Broadcast можно будет найти на сайте AppTractor
Подружился с проектом AppTractor, авторы которого ежедневно делятся множеством новостей, статей и библиотек из мира мобильной разработки: Android, iOS, Flutter, React Native, Xamarin, а также пишут на темы околомобильной разработки. Очень часто я нахожу интересные стать на их сайте и делюсь ими с вами.
Также AppTractor является домом для ребят из Android Dev Podcast (там можно найти их страничку).
#IDEA #Statistics
What's new in IntelliJ IDEA
IntelliJ IDEA - любимая многими IDE, каждый год выходит по 3 мажорных релиза. В JetBrains сделали обзор улучшений и новых фичей, которые были добавлены в 2019.
What's new in IntelliJ IDEA
IntelliJ IDEA - любимая многими IDE, каждый год выходит по 3 мажорных релиза. В JetBrains сделали обзор улучшений и новых фичей, которые были добавлены в 2019.
JetBrains
What's New in IntelliJ IDEA
Explore IntelliJ IDEA's latest features and updates to elevate your professional Java and Kotlin development experience.
#Firebase
Firebase App Distribution - Distributing test releases of your apps
После покупки Google-ом Fabric все части платформы стали интегрироваться или заменяться сервисами в Firebase.
Этого постигло и сервис Fabric Beta на замену которому пришёл Firebase App Distribution. С помощью этого сервиса вы можете распространять тестовые сборки вашего Android или iOS приложения. Есть Gradle Plug-in, поддержка Fastlane и CLI.
В статье вы найдёте интро по сервису и как настроить его интеграцию в Gradle
Внимание: Fabric будет отключена 31 марта 2020 года и миграция для всех пользователей этого сервиса обязательна
Firebase App Distribution - Distributing test releases of your apps
После покупки Google-ом Fabric все части платформы стали интегрироваться или заменяться сервисами в Firebase.
Этого постигло и сервис Fabric Beta на замену которому пришёл Firebase App Distribution. С помощью этого сервиса вы можете распространять тестовые сборки вашего Android или iOS приложения. Есть Gradle Plug-in, поддержка Fastlane и CLI.
В статье вы найдёте интро по сервису и как настроить его интеграцию в Gradle
Внимание: Fabric будет отключена 31 марта 2020 года и миграция для всех пользователей этого сервиса обязательна
#UI
Edge-to-Edge - Android library for enabling edge-to-edge content and insetting views using simple Kotlin DSL
Android 10 стал активнее развивать идею «Edge-to-Edge», когда приложение занимает всю область экрана.
Одной из реализаций этого тренда стала поддержка навигации жестами и новые типы WindowInsets:
👉 MandatorySystemGestureInsets
👉 StableInsets
👉 SystemGestureInsets
👉 SystemWindowInsets
👉 TappableElementInsets
Однозначно стало все сложнее. Библиотека «Edge-to-Edge» призвана упростить работу с
Edge-to-Edge - Android library for enabling edge-to-edge content and insetting views using simple Kotlin DSL
Android 10 стал активнее развивать идею «Edge-to-Edge», когда приложение занимает всю область экрана.
Одной из реализаций этого тренда стала поддержка навигации жестами и новые типы WindowInsets:
👉 MandatorySystemGestureInsets
👉 StableInsets
👉 SystemGestureInsets
👉 SystemWindowInsets
👉 TappableElementInsets
Однозначно стало все сложнее. Библиотека «Edge-to-Edge» призвана упростить работу с
WindowInsets
GitHub
GitHub - sergejsha/edge-to-edge: Full screen Android apps using simple Kotlin DSL
Full screen Android apps using simple Kotlin DSL. Contribute to sergejsha/edge-to-edge development by creating an account on GitHub.
Вы можете подробнее изучить тему Android Insets из Android 10, посмотрев доклад Константина Цховребова - «Android Insets — deal with fears and get ready for Android Q»
#Gradle
Decommissioning HTTP for Gradle Services
Начиная с 15 января 2020 Gradle сервисы станут доступны только по HTTPS. Если вдруг у вас что-то перестанет собираться - обратите внимание.
Что будет затронуто:
👉 Gradle Plugin Portal (plugins.gradle.org/m2)
👉 Gradle Distributions - сервис для загрузки Gradle Wrapper
Проверьте в своем проекте
Decommissioning HTTP for Gradle Services
Начиная с 15 января 2020 Gradle сервисы станут доступны только по HTTPS. Если вдруг у вас что-то перестанет собираться - обратите внимание.
Что будет затронуто:
👉 Gradle Plugin Portal (plugins.gradle.org/m2)
👉 Gradle Distributions - сервис для загрузки Gradle Wrapper
Проверьте в своем проекте
distributionUrl
в файле gradle/wrapper/gradle-wrapper.properties
blog.gradle.org
Decommissioning HTTP for Gradle Services
Starting in January 2020, Gradle services will only serve requests made with HTTPS. From that point on,
all requests made with HTTP will be denied and any builds and artifact mirrors that use a Gradle URL wi...
all requests made with HTTP will be denied and any builds and artifact mirrors that use a Gradle URL wi...
#Tests #Intro
Серия статей которая делает вступление в типы тестирования на Android и с помощью каких инструментов их можно осуществлять
Статьи:
1️⃣ Типы тестов, пирамида, основные библиотеки и инструменты
2️⃣ Non-instrumented (они же Unit) тесты, Robolectrics
3️⃣ Instrumented тесты: UIAutomator, Espresso
4️⃣ "End-to-End" и ручное тестирование: Appium, типы "End-to-End" тестов
Серия статей которая делает вступление в типы тестирования на Android и с помощью каких инструментов их можно осуществлять
Статьи:
1️⃣ Типы тестов, пирамида, основные библиотеки и инструменты
2️⃣ Non-instrumented (они же Unit) тесты, Robolectrics
3️⃣ Instrumented тесты: UIAutomator, Espresso
4️⃣ "End-to-End" и ручное тестирование: Appium, типы "End-to-End" тестов
У меня всегда была мечта сделать конференцию для Android разработчиков. Только по этой технологии и все что связано с ней. Но мир суров и на любую конференцию нужен бюджет и аудитория. Очень хочется узнать интересно было ли вам прийти на такую конференцию.
Давайте обсуждать в @android_broadcast_discussions
Давайте обсуждать в @android_broadcast_discussions
Интересно вам сходить на конференцию по Android?
Final Results
31%
Да, но только бесплатно
35%
Да, готов заплатить (около 50$)
19%
Да, только за счет компании
7%
Нет
8%
Другое
#Kotlin #Operator
Companion object invoke operator overloading for default constructor argument in generic classes
Встречались ли вы с возможность, что вы можете создать объект интерфейса через конструктор? Спобов для этого 2:
👉 Создать функцию c именем интерфейса в том же пакете где лежит интерфейс (например так делается для List)
👉 Переопределить оператор invoke
В статье разбирается пример как
Companion object invoke operator overloading for default constructor argument in generic classes
Встречались ли вы с возможность, что вы можете создать объект интерфейса через конструктор? Спобов для этого 2:
👉 Создать функцию c именем интерфейса в том же пакете где лежит интерфейс (например так делается для List)
👉 Переопределить оператор invoke
В статье разбирается пример как
invoke
оператор помог задать дефолтное значение в конструкторе, в котором принимается generic параметрMedium
Companion object invoke operator overloading for default constructor argument in generic classes
A real world case in a coroutine test rule implementation
#JetpackCompose
A Deep Dive Into Jetpack Compose
"This article is not about how to use Jetpack Compose or its basics" - вот такой фразой начинается статья. В статье разбирается почему нам нужно заменить систему View и как это делается в Jetpack Compose
A Deep Dive Into Jetpack Compose
"This article is not about how to use Jetpack Compose or its basics" - вот такой фразой начинается статья. В статье разбирается почему нам нужно заменить систему View и как это делается в Jetpack Compose
Medium
A Deep Dive Into Jetpack Compose
Designing a Kotlin-first UI Kit
#Coroutines
Android Broadcast Podcast #4: "Coroutines Under The Hood" c Ильмиром Усмановым
Поговорили с Ильмиром Усмановым о устройстве Coroutine под капотом и о их будущем, а также о том какого работать в JetBrains над проектом, от которого миллионы разработчиков ждут покорения новых вершин.
Ильмис Усманов - разработчик Kotlin/JVM компилятора в JetBrains. За его плечами 6 лет опыта разработки компиляторов, 2 из которых - поддержка Coroutine в компиляторе. Также наш гость контрибьютил в ART (Android Runtime).
В выпуске вы узнаете:
- Как устроиться в JetBrains
- Как развлекаются программисты из JetBrains
- Coroutine в Jetpack Compose
- Почему релиз Jetpack Compose может затянуться
- Новый IR backend Kotlin компилятора
- Что будет в Kotlin 1.4 для Coroutine
- Jake Wharton исправляет байт-код от Kotlin/JVM
- Какие возможности могут появиться в Coroutine в будущем
- Улучшения в дебаггере IDEA для поддержки Coroutine
- Inline кода, благодаря которому Flow работают так быстро
Полезные ссылки:
👉 Coroutines Keep
👉 Доклад про inline Coroutine от Ильмира
👉 Kotlin Flow
👉 Kotlin Slack
👉 Kotlin Telegram
Android Broadcast Podcast #4: "Coroutines Under The Hood" c Ильмиром Усмановым
Поговорили с Ильмиром Усмановым о устройстве Coroutine под капотом и о их будущем, а также о том какого работать в JetBrains над проектом, от которого миллионы разработчиков ждут покорения новых вершин.
Ильмис Усманов - разработчик Kotlin/JVM компилятора в JetBrains. За его плечами 6 лет опыта разработки компиляторов, 2 из которых - поддержка Coroutine в компиляторе. Также наш гость контрибьютил в ART (Android Runtime).
В выпуске вы узнаете:
- Как устроиться в JetBrains
- Как развлекаются программисты из JetBrains
- Coroutine в Jetpack Compose
- Почему релиз Jetpack Compose может затянуться
- Новый IR backend Kotlin компилятора
- Что будет в Kotlin 1.4 для Coroutine
- Jake Wharton исправляет байт-код от Kotlin/JVM
- Какие возможности могут появиться в Coroutine в будущем
- Улучшения в дебаггере IDEA для поддержки Coroutine
- Inline кода, благодаря которому Flow работают так быстро
Полезные ссылки:
👉 Coroutines Keep
👉 Доклад про inline Coroutine от Ильмира
👉 Kotlin Flow
👉 Kotlin Slack
👉 Kotlin Telegram
YouTube
"Под капотом у Kotlin Coroutine" с Ильмиром Усмановым@JetBrains
Поговорили с Ильмиром Усмановым о устройстве Coroutine под капотом и о их будущем, а также о том какого работать в JetBrains над проектом, от которого миллионы разработчиков ждут покорения новых вершин.
Ильмис Усманов - разработчик Kotlin/JVM компилятора…
Ильмис Усманов - разработчик Kotlin/JVM компилятора…
#Kotlin
Safely accessing lateinit variables
Рецепт безопасного обращения к lateinit переменным в Kotlin, которое появилось в версии 1.2:
Только не проще ли бы использовать nullable property и использовать
Моя рекомендация - не стоит убегать от nullable значений,
Заменить
Safely accessing lateinit variables
Рецепт безопасного обращения к lateinit переменным в Kotlin, которое появилось в версии 1.2:
lateinit var fullName: String
if (::fullName.isInitialized) {
print("Hi, $fullName")
}
Только не проще ли бы использовать nullable property и использовать
null
со старой доброй проверкой if (fullName != null)
. Моя рекомендация - не стоит убегать от nullable значений,
lateinit
должно использовать только в случаях когда у вас инициализация происходит не в конструкторе, а в методе который вызывается сразу за ним, например Activity.onCreate()
. Причем метод откуда приходит значения не должен быть асинхронным.Заменить
lateinit
можно nullable property или делегатом lazy. А вообще используйте его только с Dagger в Android компонентах.Okkotlin
Safely accessing lateinit variables
Lateinit variables are handy when we can't define a variable value upfront. Let's see how we can safely access lateinit variables without crashing our program.