#MemoryLeak #ViewBinding
Avoiding memory leaks when using Data Binding and View Binding
При использовании View Binding легко попасть в ситуацию, когда у вас в Fragment начнет утекать память. Связано это с тем, что ViewBinding хранит ссылки на View, которые уничтожаются в
Самое интересное, что автор предложил решением мою библиотеку ViewBindingPropertyDelegate, которая изящно решает работу с ViewBinding и DataBinding.
Avoiding memory leaks when using Data Binding and View Binding
При использовании View Binding легко попасть в ситуацию, когда у вас в Fragment начнет утекать память. Связано это с тем, что ViewBinding хранит ссылки на View, которые уничтожаются в
onDestroyView()
и создаются в onCreateView()
.Самое интересное, что автор предложил решением мою библиотеку ViewBindingPropertyDelegate, которая изящно решает работу с ViewBinding и DataBinding.
Medium
Avoiding memory leaks when using Data Binding and View Binding
In our current project we are using a lot of Data Binding and recently we have started using View Binding as well.
#Coroutines #Testing #Flow
Turbine - маленькая библиотека для тестирования kotlinx.coroutines Flow
Автор - Jake Wharton
Библиотека позволяет проверить какие данные были проэмичены в Flow
Turbine - маленькая библиотека для тестирования kotlinx.coroutines Flow
Автор - Jake Wharton
Библиотека позволяет проверить какие данные были проэмичены в Flow
#Android11 #Animations
Animating your Keyboard (part 1)
В Android 11 появилась возможность создавать плавные анимации UI при открытии/закрытии системной клавиатуры, благодаря множествам улучшений в WindowInsets, которые также доступны в WindowInsetsCompat.
Чтобы поддержать новую возможность вам надо:
1️⃣ Добавить поддержку edge-to-edge в ваше приложение (отрисовка под системными панелями)
2️⃣ Добавить слушателя на изменение отступа при открытии/закрытии клавиатуры
3️⃣ Добавить реакцию на изменения
В первой части рассказывается про то как сделать приложение "edge-to-edge", новые API WindowInsets в Android 11 и рекомендации по использованию.
Помимо всего появилось новое API - WindowInsetsController, позволяющее показать/скрыть клавиатуру и много чего другого. Это API заменило собой работу с показом/скрытием системного UI и настройкой его отображения, например Immersive Mode. WindowInsetsController пока нет в AndroidX, но появится.
Animating your Keyboard (part 1)
В Android 11 появилась возможность создавать плавные анимации UI при открытии/закрытии системной клавиатуры, благодаря множествам улучшений в WindowInsets, которые также доступны в WindowInsetsCompat.
Чтобы поддержать новую возможность вам надо:
1️⃣ Добавить поддержку edge-to-edge в ваше приложение (отрисовка под системными панелями)
2️⃣ Добавить слушателя на изменение отступа при открытии/закрытии клавиатуры
3️⃣ Добавить реакцию на изменения
В первой части рассказывается про то как сделать приложение "edge-to-edge", новые API WindowInsets в Android 11 и рекомендации по использованию.
Помимо всего появилось новое API - WindowInsetsController, позволяющее показать/скрыть клавиатуру и много чего другого. Это API заменило собой работу с показом/скрытием системного UI и настройкой его отображения, например Immersive Mode. WindowInsetsController пока нет в AndroidX, но появится.
Medium
Animating your Keyboard
New WindowInsets APIs for checking the keyboard (IME) visibility and size
#Android11 #Animations
Animating your keyboard (part 2): Reacting to WindowInset animations
Во второй части рассказывается про интеграцию со слушателем
Animating your keyboard (part 2): Reacting to WindowInset animations
Во второй части рассказывается про интеграцию со слушателем
WindowInsets
в Android 11 на основе нового API WindowInsetsAnimationMedium
Animating your keyboard: Reacting to inset animations
#AndroidBroadcast #Kotlin #Multiplatform
Разбор Kotlin 1.4: быстрее и лучше (Livestream)
Обсуждаем новую версию Kotlin с Developer Advocate из JetBrains Светланой Исаковой и командой Android Dev Podcast! Разбираем всё: синтаксис языка, библиотеки KotlinX, улучшения в IDE и Multiplatform
Помимо прочего во время стрима будет проводиться розыгрыш ценных призов для настоящих Kotlin программистов!
Соведущие:
- Михаил Емельянов, Head of Android Dev в ЦФТ
- Вадим Котов, Android Developer в AdCombo
- Дмитрий Мовчан, Android Software Engineer в Revolut
Подписывайтесь на канал, чтобы не пропустить новые видео и поддержать автора
Разбор Kotlin 1.4: быстрее и лучше (Livestream)
Обсуждаем новую версию Kotlin с Developer Advocate из JetBrains Светланой Исаковой и командой Android Dev Podcast! Разбираем всё: синтаксис языка, библиотеки KotlinX, улучшения в IDE и Multiplatform
Помимо прочего во время стрима будет проводиться розыгрыш ценных призов для настоящих Kotlin программистов!
Соведущие:
- Михаил Емельянов, Head of Android Dev в ЦФТ
- Вадим Котов, Android Developer в AdCombo
- Дмитрий Мовчан, Android Software Engineer в Revolut
Подписывайтесь на канал, чтобы не пропустить новые видео и поддержать автора
#Lint #CodeQuality
Android Lint Framework — An Introduction
Android Lint - специальная утилита для Android проектов, которая анализирует в нем различные файлы (код, ресурсы, Gradle скрипты и др.). Утилита обнаруживает нарушения правил, которым рекомендуется следовать.
Android Lint можно дополнить своими правилами. В статье разбирается создание правила по обнаружению использованию стандартного ImageView с предложением его замены на собственный.
Исходный код можно найти здесь
Android Lint Framework — An Introduction
Android Lint - специальная утилита для Android проектов, которая анализирует в нем различные файлы (код, ресурсы, Gradle скрипты и др.). Утилита обнаруживает нарушения правил, которым рекомендуется следовать.
Android Lint можно дополнить своими правилами. В статье разбирается создание правила по обнаружению использованию стандартного ImageView с предложением его замены на собственный.
Исходный код можно найти здесь
#Material #DarkTheme
Dark Theme with Material Design Components
Поддержка темной темы - это важная возможность приложения в современном мире, которая позволяет уменьшить нагрузку на глаза пользователя и экономить заряд батареи.
Material Design Component (MDC) из коробки поддерживают работу с темной темой. Доступна функция для Android 5.0 и выше.
В статье разбирается как вам правильно использовать компоненты и настроить Material Theme, чтобы реализовать темную тему у себя в приложении.
Dark Theme with Material Design Components
Поддержка темной темы - это важная возможность приложения в современном мире, которая позволяет уменьшить нагрузку на глаза пользователя и экономить заряд батареи.
Material Design Component (MDC) из коробки поддерживают работу с темной темой. Доступна функция для Android 5.0 и выше.
В статье разбирается как вам правильно использовать компоненты и настроить Material Theme, чтобы реализовать темную тему у себя в приложении.
Medium
Dark Theme with MDC
Using Material Design Components to implement a dark theme
#Testing #Espresso #Jetpack
Вышла библиотека AndroidX Test 1.3.0
👉 Core 1.3.0
👉 Espresso 3.3.0
👉 Intents 3.3.0
👉 JUnit 1.1.2
👉 Monitor 1.3.0
👉 Orchestrator 1.3.0
👉 Runner 1.3.0
👉 Rules 1.3.0
👉 Truth 1.3.0
👉 Test Services 1.3.0
Замечание: пытался найти что за изменения произошли в библиотеках, но кроме перечисления обновленных библиотек ничего нет (
Вышла библиотека AndroidX Test 1.3.0
👉 Core 1.3.0
👉 Espresso 3.3.0
👉 Intents 3.3.0
👉 JUnit 1.1.2
👉 Monitor 1.3.0
👉 Orchestrator 1.3.0
👉 Runner 1.3.0
👉 Rules 1.3.0
👉 Truth 1.3.0
👉 Test Services 1.3.0
Замечание: пытался найти что за изменения произошли в библиотеках, но кроме перечисления обновленных библиотек ничего нет (
#Gradle
apkscale
Gradle плагин, который позволит определить какой эффект на размер приложения оказывает Android библиотека. Всем кто более за размер приложения будет полезно.
apkscale
Gradle плагин, который позволит определить какой эффект на размер приложения оказывает Android библиотека. Всем кто более за размер приложения будет полезно.
GitHub
GitHub - twilio/apkscale: A Gradle plugin to measure the app size impact of Android libraries
A Gradle plugin to measure the app size impact of Android libraries - GitHub - twilio/apkscale: A Gradle plugin to measure the app size impact of Android libraries
#Testing #Coverage
Code Coverage Best Practices
Чтобы понять насколько хорошо покрыто тестами ваше приложение, надо это измерить. Google делиться своим опытом по покрытию тестами проектов и как это сделать.
Code Coverage Best Practices
Чтобы понять насколько хорошо покрыто тестами ваше приложение, надо это измерить. Google делиться своим опытом по покрытию тестами проектов и как это сделать.
Google Testing Blog
Code Coverage Best Practices
By Carlos Arguelles, Marko Ivanković, and Adam Bender We have spent several decades driving software testing initiatives in various very la...
#JetpackCompose #UI
Announcing Jetpack Compose Alpha!
Вышла первая альфа-версия Jetpack Compose 🚀! API все еще нестабильное и могут происходить изменения в нем до Beta
Альфа релиз включает в себя:
👉 Анимация
👉 Constraint Layout
👉 Базовую поддержку A11Y
👉 Ввод и жесты
👉 Взаимодействие с View (полный interop)
👉 Lazy Lists
👉 Material UI
👉 Улучшения в производительности
👉 Тестирование
👉 Темы и графику
👉 Управление окнами
Android Studio 4.2 включает целый ряд инструментов, чтобы удобно работать с Jetpack Compose.
👉 Новые каноничные примеры Jetpack Compose
👉 "Изучение шаг за шагом" - цикл статей и Codelab
👉 Документация
Также рекомендую посмотреть новые видео:
📺 Compose for existing apps (22:05) - интеграция Compose в существующие приложения
📺 Thinking in Compose (25:27) - как правильно мыслить о построение UI в шаблонах Compose
📺 Compose by example (22:07) - примеры использования Compose
Announcing Jetpack Compose Alpha!
Вышла первая альфа-версия Jetpack Compose 🚀! API все еще нестабильное и могут происходить изменения в нем до Beta
Альфа релиз включает в себя:
👉 Анимация
👉 Constraint Layout
👉 Базовую поддержку A11Y
👉 Ввод и жесты
👉 Взаимодействие с View (полный interop)
👉 Lazy Lists
👉 Material UI
👉 Улучшения в производительности
👉 Тестирование
👉 Темы и графику
👉 Управление окнами
Android Studio 4.2 включает целый ряд инструментов, чтобы удобно работать с Jetpack Compose.
👉 Новые каноничные примеры Jetpack Compose
👉 "Изучение шаг за шагом" - цикл статей и Codelab
👉 Документация
Также рекомендую посмотреть новые видео:
📺 Compose for existing apps (22:05) - интеграция Compose в существующие приложения
📺 Thinking in Compose (25:27) - как правильно мыслить о построение UI в шаблонах Compose
📺 Compose by example (22:07) - примеры использования Compose
Android Developers Blog
Announcing Jetpack Compose Alpha!
Posted by Karen Ng , Director, Product Management Today, we’re releasing the alpha of Jetpack Compose , our modern UI toolkit desig...
Будете пробовать альфу Jetpack Compose в production приложениях?
Anonymous Poll
11%
Да
17%
Жду Beta
43%
Жду Stable
14%
Не планирую использовать Compose
15%
Не участвую в опросе
#Fragment
Android Fragment Result Listener (RU)
Разбор нового API Fragment - Fragment Result API, которое заменить Fragment Target API и позволит передать результат между
В статье разбирается как работать с новым API и его тестирование
Android Fragment Result Listener (RU)
Разбор нового API Fragment - Fragment Result API, которое заменить Fragment Target API и позволит передать результат между
Fragment
в рамках одного. FragmentManager
проще.В статье разбирается как работать с новым API и его тестирование
Хабр
Android Fragment Result Listener
В Android передача данных между фрагментами может осуществляться разными способами: передача через родительскую Activity, используя ViewModel или даже Fragment...
#Awareness
Smarter apps with Awareness API
Google Awareness API позволяет вам отслеживать изменения вокруг пользователя с помощью сенсоров устройств и получать информацию о текущем состоянии.
Что можно сделать? Например, легко отследить состояние подключения наушников, отследить активность пользователя (бег, ходьба и др.). Мало того API может предсказывать ближайшие активности пользователя
Smarter apps with Awareness API
Google Awareness API позволяет вам отслеживать изменения вокруг пользователя с помощью сенсоров устройств и получать информацию о текущем состоянии.
Что можно сделать? Например, легко отследить состояние подключения наушников, отследить активность пользователя (бег, ходьба и др.). Мало того API может предсказывать ближайшие активности пользователя
Medium
Smarter apps with Awareness API
Making a know-it-all, without pulling your hair
#Kotlin #SAM
Support for Kotlin SAM in release 1.4
SAM (Single Abstract Method) - это интерфейс у которого только 1 метод без реализации по умолчанию. Также такие интерфейсы называют Functional Interface.
В Kotlin 1.4 добавили возможность использовать SAM Kotlin интерфейсы, к уже существующей поддержки только Java SAM.
В статье рассматривается адаптация нового функции языка в вашем коде
Support for Kotlin SAM in release 1.4
SAM (Single Abstract Method) - это интерфейс у которого только 1 метод без реализации по умолчанию. Также такие интерфейсы называют Functional Interface.
В Kotlin 1.4 добавили возможность использовать SAM Kotlin интерфейсы, к уже существующей поддержки только Java SAM.
В статье рассматривается адаптация нового функции языка в вашем коде
👨💻 Jorge Castillo
Support for Kotlin SAM in release 1.4
About Kotlin SAM support for Java interoperability and also for Kotlin interfaces starting on release 1.4. 🤷 SAM? This feature also exists in other JVM languages like Java 8 or Scala. SAM stands for Single Abstract Method and it refers to interfaces with…
#Material #Animation
Adding Amazing Transitions to Your Android App Easily Using Material Motion
В последнем релизе Material Components 1.2.0 добавили реализацию стандартны анимаций из Material Motion. В статье разбирают как их использовать и получить крутые результаты.
Adding Amazing Transitions to Your Android App Easily Using Material Motion
В последнем релизе Material Components 1.2.0 добавили реализацию стандартны анимаций из Material Motion. В статье разбирают как их использовать и получить крутые результаты.
Medium
Adding Amazing Transitions to Your Android App Easily Using Material Motion
Getting Started 🎬
#JetpackCompose #UnderTheHood
Understanding Jetpack Compose — Part 1 of 2
Совсем недавно была анонсирована альфа Jetpack Compose. Вместе с этим нам стало доступно множество обучающих материалов и документации.
В статье разбираются базовые принципы декларативного подхода в UI и чем он отличается привычному Android разработчику иерархии View + XML
Understanding Jetpack Compose — Part 1 of 2
Совсем недавно была анонсирована альфа Jetpack Compose. Вместе с этим нам стало доступно множество обучающих материалов и документации.
В статье разбираются базовые принципы декларативного подхода в UI и чем он отличается привычному Android разработчику иерархии View + XML
Medium
Understanding Jetpack Compose — part 1 of 2
Better UI building with Compose
#JetpackCompose #UnderTheHood
Under the hood of Jetpack Compose — part 2 of 2
Продолжение раскрытие деталей реализации Jetpack Compose. Во второй части вы найдете ответы на вопросы:
👉 Что значит аннотация
👉 В чем похожи
👉 Как строится UI в Jetpack Compose
👉 Что такое
👉 Как устроена работа с входными параметрами и обновлением UI в Jetpack Compose
Важно: чтобы работать с Jetpack Compose вам не нужно понять детали этой статьи
Under the hood of Jetpack Compose — part 2 of 2
Продолжение раскрытие деталей реализации Jetpack Compose. Во второй части вы найдете ответы на вопросы:
👉 Что значит аннотация
@Composable
👉 В чем похожи
@Composable
и suspend
из Kotlin👉 Как строится UI в Jetpack Compose
👉 Что такое
Composer
👉 Как устроена работа с входными параметрами и обновлением UI в Jetpack Compose
Важно: чтобы работать с Jetpack Compose вам не нужно понять детали этой статьи
Medium
Under the hood of Jetpack Compose — part 2 of 2
Under the hood of Compose
#Android10 #Thermal
Thermal in Android
Хотите узнать насколько горячее ваше приложение? Вы сможете это сделать в Android 10 с помощью нового Thermal API. Оно также доступно в NDK, но только с Android 11.
Кому это может быть полезно? Разработчикам игр и всех приложений, кто активно используется железо устройства, например приложения камеры во время съемки видео.
Thermal in Android
Хотите узнать насколько горячее ваше приложение? Вы сможете это сделать в Android 10 с помощью нового Thermal API. Оно также доступно в NDK, но только с Android 11.
Кому это может быть полезно? Разработчикам игр и всех приложений, кто активно используется железо устройства, например приложения камеры во время съемки видео.
Medium
Thermal in Android
Reacting to and better handling thermal issues in Android
#Gradle #Performance
The proper care and feeding of your Gradle build
Скорость сборки Gradle проекта - это всегда боль для Android проектов. Негативно на скорость сборки могут влиять зависимости, процессоры аннотаций и Gradle плагины.
С помощью Gradle плагина от автора статьи вы можете проанализировать ваш проект и понять какие зависимости:
👉 Не используются в вашем проекте
👉 Какие процессоры аннотаций не используются в вашем проекте
👉 Объявляете ли вы зависимости корректно (
👉 Используете ли вы код из транзитивных зависимостей, которые лучше определить явно
👉 Есть ли у вас неиспользуемые Gradle плагины
Анализировать ваш проект стоит регулярно, что позволит четко следить за вашими зависимостями. Возможно задуматься о запуске плагина на CI частью ПРов
The proper care and feeding of your Gradle build
Скорость сборки Gradle проекта - это всегда боль для Android проектов. Негативно на скорость сборки могут влиять зависимости, процессоры аннотаций и Gradle плагины.
С помощью Gradle плагина от автора статьи вы можете проанализировать ваш проект и понять какие зависимости:
👉 Не используются в вашем проекте
👉 Какие процессоры аннотаций не используются в вашем проекте
👉 Объявляете ли вы зависимости корректно (
api
, implementation
, compileOnly
и др)👉 Используете ли вы код из транзитивных зависимостей, которые лучше определить явно
👉 Есть ли у вас неиспользуемые Gradle плагины
Анализировать ваш проект стоит регулярно, что позволит четко следить за вашими зависимостями. Возможно задуматься о запуске плагина на CI частью ПРов
DEV Community
The proper care and feeding of your Gradle build
Maintain a healthy build with the Dependency Analysis Gradle Plugin. Optimize your dependency graph and remove redundant plugins.