#RecyclerView
Custom ItemDecoration
Наверняка вы знаете что разделять item'ы в RecyclerView путём добавления в их xml специального view-разделителя - это очень плохая практика. Для этих целей существует такой инструмент как ItemDecoration.
Благодаря тому что мы можем наследоваться от этой абстракции у нас открываются возможности разнообразной реализации, например:
👉 Убрать разделитель для последнего item'а
👉 Сделать специальные разделители для определённого ViewType
👉 Показывать уникальные разделители для item'ов на определённых позициях.
Автор подробно рассматривает все случаи кастомных декораций и даёт примеры кода для реализации в своих проектах
Custom ItemDecoration
Наверняка вы знаете что разделять item'ы в RecyclerView путём добавления в их xml специального view-разделителя - это очень плохая практика. Для этих целей существует такой инструмент как ItemDecoration.
Благодаря тому что мы можем наследоваться от этой абстракции у нас открываются возможности разнообразной реализации, например:
👉 Убрать разделитель для последнего item'а
👉 Сделать специальные разделители для определённого ViewType
👉 Показывать уникальные разделители для item'ов на определённых позициях.
Автор подробно рассматривает все случаи кастомных декораций и даёт примеры кода для реализации в своих проектах
Какие возможност RecyclerView вы используете? (множественный выбор)
Anonymous Poll
71%
ItemDecoration
11%
Шаринг RecycledViewPoll между 2+ RecyclerView
78%
DiffUtil
12%
ConcatAdapter (ex MergeAdapter)
15%
Пишу кастоный LayoutManager
30%
SnapHelper
23%
payload в методах RecyclerView.Adapter
4%
state restoration policy
6%
Другой вариант
10%
Не участвую в опросе
Android Broadcast
#Location Improving urban GPS accuracy for your app Google улучшает позиционирование в больших городах. Заработает это для тех кто использует Fused Location Provider. Улучшения затрагивают 3850 городов, но Россия и Украина в них не попадает (
Всем приношу извинения за то что написал Украина с маленькой буквы. Сделано было не со зла, а из-за опечатки т.к. слишком быстрый темп жизни постоянно дает о себе знать.
#AndroidBroadcast
Встречайте канал @kotlin_broadcast. В новом канале от автора @android_broadcast будет множество новостей которые касаются Kotlin и Multiplatform разработки.
Важно: Самые важные новости касательно Android разработки на Kotlin по-прежнему будут в @android_broadcast!
Встречайте канал @kotlin_broadcast. В новом канале от автора @android_broadcast будет множество новостей которые касаются Kotlin и Multiplatform разработки.
Важно: Самые важные новости касательно Android разработки на Kotlin по-прежнему будут в @android_broadcast!
#RecyclerView
How to Cook the 60 FPS RecyclerView?
Советы как сделать работу вашего RecyclerView максимально быстрой и плавной:
👉 Максимально простая иерархия View. И плоская
👉 Не стесняйтесь прибегать к Custom View, чтобы сделать иерархию плоской
👉 Большое количество уникальных типов элементов негативно влияет сна производительность
👉 Используйте оптимизации RecyclerView: DiffUtils, setHasFixedSize(), setItemViewCacheSize(), setRecycledViewPool()
How to Cook the 60 FPS RecyclerView?
Советы как сделать работу вашего RecyclerView максимально быстрой и плавной:
👉 Максимально простая иерархия View. И плоская
👉 Не стесняйтесь прибегать к Custom View, чтобы сделать иерархию плоской
👉 Большое количество уникальных типов элементов негативно влияет сна производительность
👉 Используйте оптимизации RecyclerView: DiffUtils, setHasFixedSize(), setItemViewCacheSize(), setRecycledViewPool()
This media is not supported in your browser
VIEW IN TELEGRAM
#AndroidBroadcast
Рад представить вам генерального партнёра проекта Android Broadcast - AvitoTech. Это очень классные ребята с отличной культурой разработки. У меня появилась возможность работать с ними ближе в рамках сотрудничества и я этому очень рад!
Если вам интересно присоединиться к их команде, то прямо сейчас они ищут Android разработчиков в команды:
🔥 Speed (CI/CD, фреймворки для тестирования и релизы)
🚀 Performance (ускорение Авито на всех платформах)
Рад представить вам генерального партнёра проекта Android Broadcast - AvitoTech. Это очень классные ребята с отличной культурой разработки. У меня появилась возможность работать с ними ближе в рамках сотрудничества и я этому очень рад!
Если вам интересно присоединиться к их команде, то прямо сейчас они ищут Android разработчиков в команды:
🔥 Speed (CI/CD, фреймворки для тестирования и релизы)
🚀 Performance (ускорение Авито на всех платформах)
#Security
Подменяем Runtime permissions в Android
В Android можно обмануть систему при показе системного диалога с получением разрешения, перекрыв его своим. Уязвимость появилась после Android 7.1.
Подменяем Runtime permissions в Android
В Android можно обмануть систему при показе системного диалога с получением разрешения, перекрыв его своим. Уязвимость появилась после Android 7.1.
#Security #GooglePlay
Seeing If Your App Has the Play Core Vulnerability
Найдена уязвимость в библиотеке Google Play Core, которая позволяет выполнять код удаленно. Уязвимость содержится во всех версиях библиотеки с 1.3.6 до 1.7.1. Бегите обновляться до любой версии, начиная с 1.7.2.
Чтобы проверить, использует ли ваше приложение эту библиотеку выполните в терминале команду
Возможно библиотека не подключена у вас явным образом, но может подключаться транзитивно из других библиотек
Seeing If Your App Has the Play Core Vulnerability
Найдена уязвимость в библиотеке Google Play Core, которая позволяет выполнять код удаленно. Уязвимость содержится во всех версиях библиотеки с 1.3.6 до 1.7.1. Бегите обновляться до любой версии, начиная с 1.7.2.
Чтобы проверить, использует ли ваше приложение эту библиотеку выполните в терминале команду
./gradlew <МОДУЛЬ ПРИЛОЖЕНИЯ>:dependencies | fgrep "com.google.android.play:core"Возможно библиотека не подключена у вас явным образом, но может подключаться транзитивно из других библиотек
#Emulator
Android Emulator Apple Silicon Preview
Для всех кто прикупил новые MacBook c M1 и хочет их использовать как основную машину для разработки хорошая новость - в команде Android уже работают над версией эмулятора ARM64, которую можно будет запускать на Apple Silicon.
Пока все находится в разработке и не работает множество функций в системе, таких как WebView, звук, Vulkan и др. Для приложений где этот функционал отсутсвует или некритичен вы можете попробовать обкатать этот эмулятор
Android Emulator Apple Silicon Preview
Для всех кто прикупил новые MacBook c M1 и хочет их использовать как основную машину для разработки хорошая новость - в команде Android уже работают над версией эмулятора ARM64, которую можно будет запускать на Apple Silicon.
Пока все находится в разработке и не работает множество функций в системе, таких как WebView, звук, Vulkan и др. Для приложений где этот функционал отсутсвует или некритичен вы можете попробовать обкатать этот эмулятор
#Kotlin #IDEA
Kotlin Plugin Released With IDEA 2020.3
Разработка Kotlin плагина переехала в репозиторий IDEA и стала его частью, чтобы упростить интеграцию последних фичей платформы. Теперь мажорные релизы Kotlin плагина будут выходить вместе с IDE от JetBrains.
В последнем релизе 2020.3 добавили такие функции:
👉 Inline рефакторинг в разных языках
👉 Поддержка структурного поиска и замены для Kotlin, позволяющие искать код по шаблону
👉 Поддержка настроек форматирования кода для Kotlin плагина в .editorconfig
👉 Новые шаблоны для Jetpack Compose for Desktop и KMP
Хотите получать больше новостей о Kotlin и Kotlin Mobile Multiplatform? Подписывайтесь на Telegram канал @kotlin_broadcast
Kotlin Plugin Released With IDEA 2020.3
Разработка Kotlin плагина переехала в репозиторий IDEA и стала его частью, чтобы упростить интеграцию последних фичей платформы. Теперь мажорные релизы Kotlin плагина будут выходить вместе с IDE от JetBrains.
В последнем релизе 2020.3 добавили такие функции:
👉 Inline рефакторинг в разных языках
👉 Поддержка структурного поиска и замены для Kotlin, позволяющие искать код по шаблону
👉 Поддержка настроек форматирования кода для Kotlin плагина в .editorconfig
👉 Новые шаблоны для Jetpack Compose for Desktop и KMP
Хотите получать больше новостей о Kotlin и Kotlin Mobile Multiplatform? Подписывайтесь на Telegram канал @kotlin_broadcast
#AnroidBroadcast #Notification #Firebase
Советы по уведомлениям в Android (25 мин)
Рассказываю про уведомления в Android: почему вам стоит уделить время их интеграции, какие сложности скрывает API уведомлений в Android и что может сделать FCM. Помимо прочего представляю свою библиотеку Android Notification DSL
Ставьте лайки этому видео на YouTube, оставляйте комментарии с вашими пожеланиями по новым темам. Ну и конечно же подписывайтесь на канал Android Broadcast!
Советы по уведомлениям в Android (25 мин)
Рассказываю про уведомления в Android: почему вам стоит уделить время их интеграции, какие сложности скрывает API уведомлений в Android и что может сделать FCM. Помимо прочего представляю свою библиотеку Android Notification DSL
Ставьте лайки этому видео на YouTube, оставляйте комментарии с вашими пожеланиями по новым темам. Ну и конечно же подписывайтесь на канал Android Broadcast!
#Jetpack #AppStartup
App Startup, Part 1
Chet Haase делает введение в AppStartup, рассказывая про суть инициализации, используя под капотом ContentProvider, который автоматом создается при запуске приложения, если объявить его в манифесте.
Цель App Startup - сократить увеличенное время запуска приложения, которые появляется из-за множества таких ContentProvider в приложениях.
Подробнее об App Startup читайте здесь
App Startup, Part 1
Chet Haase делает введение в AppStartup, рассказывая про суть инициализации, используя под капотом ContentProvider, который автоматом создается при запуске приложения, если объявить его в манифесте.
Цель App Startup - сократить увеличенное время запуска приложения, которые появляется из-за множества таких ContentProvider в приложениях.
Подробнее об App Startup читайте здесь
#AndroidStudio #DeepLink
Делюсь небольшим, но полезным плагином: Deeplink Helper для Android Studio
История создания плагина DeeplinkHelperPlugin для Android Studio, задача которого упростить открытие deep link. Вместо листания истории терминала у вас есть UI из IDE.
Делюсь небольшим, но полезным плагином: Deeplink Helper для Android Studio
История создания плагина DeeplinkHelperPlugin для Android Studio, задача которого упростить открытие deep link. Вместо листания истории терминала у вас есть UI из IDE.
#Collection
All you need to know about ArrayMap & SparseArray
Android SDK содержит свои собственные коллекции, которые призваны оптимизировать использование стандартных коллекций в специфичных для Android задачах.
В статье автор рассказывает о особенностях реализации ArrayMap и SparseArray и как они позволяют оптимизировать расход оперативной памяти и скорость.
All you need to know about ArrayMap & SparseArray
Android SDK содержит свои собственные коллекции, которые призваны оптимизировать использование стандартных коллекций в специфичных для Android задачах.
В статье автор рассказывает о особенностях реализации ArrayMap и SparseArray и как они позволяют оптимизировать расход оперативной памяти и скорость.
#Performance
How we achieved a 6x reduction of ANRs - Part 1: Collecting Data
Разработчики Badoo делают громкое заявление в названии статьи. В начале года запустили борьбу с ANR в приложении
В первой части серии статей вы найдете:
👉 Что такое ANR и как они возникают
👉 Как отслеживать ANR и как это делает Google Play
👉 Загрузка данных из Google Play Console (официального API нет, но ребята сделали решение)
👉 Как в трекать ANR самостоятельно
Рекомендую обратить внимание на библиотеку ANR-WatchDog для отслеживания ANR
How we achieved a 6x reduction of ANRs - Part 1: Collecting Data
Разработчики Badoo делают громкое заявление в названии статьи. В начале года запустили борьбу с ANR в приложении
В первой части серии статей вы найдете:
👉 Что такое ANR и как они возникают
👉 Как отслеживать ANR и как это делает Google Play
👉 Загрузка данных из Google Play Console (официального API нет, но ребята сделали решение)
👉 Как в трекать ANR самостоятельно
Рекомендую обратить внимание на библиотеку ANR-WatchDog для отслеживания ANR
#Jetpack #AndroidStudio
What’s your MAD score?
Google выпустила плагин для Android Studio, чтобы оценить насколько активно вы используете технологии современной Android разработки
Вы сможете создать карточку с оценкой вашего проекта и поделиться ею с друзьями. Инструкция здесь
What’s your MAD score?
Google выпустила плагин для Android Studio, чтобы оценить насколько активно вы используете технологии современной Android разработки
Вы сможете создать карточку с оценкой вашего проекта и поделиться ею с друзьями. Инструкция здесь
#Compose
Jetpack Compose — Before and after
Все мы ждем релиза Jetpack Compose, чтобы насладиться декларативным UI по полной. Приложение Tivi уже мигрировало на Jetpack Compose. По итогу:
👉 Уменьшения размера приложения на 41%
👉 Уменьшение количества методов на 17%
👉 Количества кода в XML уменьшилось на 76%
👉 Время сборки проекта осталось примерно таким же
Надо учесть что все замеры проводились на альфа-версии Compose и к релизу цифры могут поменяться.
Jetpack Compose — Before and after
Все мы ждем релиза Jetpack Compose, чтобы насладиться декларативным UI по полной. Приложение Tivi уже мигрировало на Jetpack Compose. По итогу:
👉 Уменьшения размера приложения на 41%
👉 Уменьшение количества методов на 17%
👉 Количества кода в XML уменьшилось на 76%
👉 Время сборки проекта осталось примерно таким же
Надо учесть что все замеры проводились на альфа-версии Compose и к релизу цифры могут поменяться.
This media is not supported in your browser
VIEW IN TELEGRAM
Сравнение приложения до Compose и после
#Android11
Treble Plus One Equals Four
Усилия Google по упрощению выпуска обновлений для устройства начинают окупаться. Android 11 стал само быстро распространяемой версией Android, а все новые SoC Qualcomm будут получать обновления для 4 версий ОС и 4 года обновлений безопасности.
В статье вы найдете подробности того, что сделали для ускорения обновления в рамках
Treble Plus One Equals Four
Усилия Google по упрощению выпуска обновлений для устройства начинают окупаться. Android 11 стал само быстро распространяемой версией Android, а все новые SoC Qualcomm будут получать обновления для 4 версий ОС и 4 года обновлений безопасности.
В статье вы найдете подробности того, что сделали для ускорения обновления в рамках
Project Treble#GooglePlay #AndroidAuto
Opening the Google Play Store for more car apps
2 месяца назад Google открыла доступ доступ к библиотеке для разработки приложений для Android Auto. Теперь можно публиковать приложения в закрытые треки Google Play.
Opening the Google Play Store for more car apps
2 месяца назад Google открыла доступ доступ к библиотеке для разработки приложений для Android Auto. Теперь можно публиковать приложения в закрытые треки Google Play.
#Jetpack #AppStartup
App Startup, Part 2
Продолжение серии статей про новую библиотеку App Startup. В новой части рассказывается про то как мигрировать инициализацию
App Startup, Part 2
Продолжение серии статей про новую библиотеку App Startup. В новой части рассказывается про то как мигрировать инициализацию
WorkManager на App Startup, а также как отложить инициализацию (lazy). Все это подкрепляется оценкой производительности разных подходов.