#Activity #Architecture
ActivityLifecycleCallbacks — слепое пятно в публичном API
ActivityLifecycleCallbacks - это полезное API, которое позволит вам избавиться от супер класса для всех
👉 Изменять темы для всех
👉 Отловить
👉 Отслеживать запускаемый экраны для аналитики
👉 Улучшить inject зависимостей через Dagger Android
Если вам нужно отслеживать через callback жизненный цикл
ActivityLifecycleCallbacks — слепое пятно в публичном API
ActivityLifecycleCallbacks - это полезное API, которое позволит вам избавиться от супер класса для всех
Activity
, в котором вы выполняете общие действия, или элегантно решить архитектурную задачу или сделать много чего еще полезного, о чем автор рассказывает в статье:👉 Изменять темы для всех
Activity
👉 Отловить
onActivityResult()
👉 Отслеживать запускаемый экраны для аналитики
👉 Улучшить inject зависимостей через Dagger Android
Если вам нужно отслеживать через callback жизненный цикл
Fragment
, то вы можете использовать FragmentLifecycleCallbacks.Хабр
ActivityLifecycleCallbacks — слепое пятно в публичном API
С детства я люблю читать инструкции. Я вырос, но меня до сих пор удивляет то, как взрослые люди безалаберно относятся к инструкциям: многие из них считают, что...
#Coroutines #Channel
Kotlin Coroutines in Android — Channel
Разбор Channel для предоставления набора значений (горячего):
👉 Что такое
👉
👉
👉 Закрытие
👉
👉 Типы
Kotlin Coroutines in Android — Channel
Разбор Channel для предоставления набора значений (горячего):
👉 Что такое
Channel
и с чем он схож👉
offer()
vs send()
👉
poll()
vs receive()
👉 Закрытие
Channel
👉
close()
vs cancel()
👉 Типы
Channel
: Rendezvous, Buffered, Unlimited, ConflatedMedium
Kotlin Coroutines in Android — Channel
The simplest way to realize what’s Channel and how to use it.
#UI #Performance
ViewStub: On-demand inflate view or lazily inflate layout resource
Как часто в UI вам приходится добавлять View, которые показываются по условию? Один из самых распространённые случаев - это показ UI при ошибках, отсутсвие сети или данных.
Как решают такую задачу разработчики? Зачастую просто складируют весь UI в одном Layout XML и используют
В Android SDK уже давно есть решение этому - ViewStub, которое позволяет вызывать inflate Layout XML отложено.
ViewStub: On-demand inflate view or lazily inflate layout resource
Как часто в UI вам приходится добавлять View, которые показываются по условию? Один из самых распространённые случаев - это показ UI при ошибках, отсутсвие сети или данных.
Как решают такую задачу разработчики? Зачастую просто складируют весь UI в одном Layout XML и используют
visibility=“gone|visible”
. Но проблема в таком решение заключается, что все View у которых видимость gone
и не отрисовываются на экране, но приложение тратит время на их парсинг, создание и добавление в иерархию, хотя по сути эти View могут даже не понадобиться вовсе.В Android SDK уже давно есть решение этому - ViewStub, которое позволяет вызывать inflate Layout XML отложено.
Medium
ViewStub: On-demand inflate view or lazily inflate layout resource
Sometimes while developing an application, we have encountered a situation like based on some logic, we have to render some new view in…
#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