Android Broadcast
14.2K subscribers
3.5K photos
336 videos
11 files
5.87K links
Подборка новостей и статей для Android разработчиков.

Связь с автором @android_broadcast_bot
Реклама @android_broadcast_bot

РКН https://abdev.by/rkn_tg_ab
Download Telegram
#Dagger #Factory #Kotlin

Injection into Android Component’s Constructors is real

Что вас огорчает в Kotlin? Меня огорчает костыль в виде lateinit для inject зависимостей. Я считаю, что стоит это сделать по нормальному и доставлять все зависимости при создании в конструктор. Но как это сделать для Activity или Fragment, так как все знают правило - "Все компоненты Android должны иметь конструкторы по умолчанию"?

В статье я написал руководство как при помощи Dagger можно реализовать это, а также увеличить производительность вашего кода.
#ConstraintLayout #UI

ConstraintLayout Flow: Simple Grid Building Without Nested Layouts

ConstraintLayout - это layout, который предназначен для реализации сложных иерархий View и предоставляет обширные возможности, которые позволяют вам избегать многоуровневой иерархии.

ConstraintLayout 2.0 предоставил возможность virtual helper object, который по сути являются правилами для размещения группы View. Пример такого объекта - Flow. Он позволяет размещать View по сетке, наподобие того как делает Google FlexboxLayout.

В статье разбираются возможности ConstraintLayout Flow и как их реализовать.
#Coroutines #Testing

Unit Testing Coroutine Suspend Functions using TestCoroutineDispatcher

Разбор возможностей TestCoroutineDispatcher, который позволяет эффективно выполнять тесты. В его возможности входит:
👉 Вызов функции delay() не приводит к паузе
👉 Возможность приостанавливать выполнение всех Coroutine в этом CoroutineDispatcher
👉 Останавливать все Coroutine в рамках CoroutineDispatcher
#Hackaton #Minsk #AndroidAcademy

22 ноября состоится хакатон, который завершит второй курс Android Fundamentals от Android Academy Minsk. В рамках хакатона вы можете показать свои навыки программирования, создав за сутки концепт приложения. Любая идея, любая сложность, любой API или SDK для использования.

Основная идея - создавать крутые проекты, писать код, разговаривать, делиться и танцевать! :)

Можно участвовать своей командой, можно участвовать в одиночку. Новичок вы или профи - вы тоже можете принять участие.

Хакатон пройдет с 22 ноября 16:00 до 23 ноября 16:00. Еда, напитки и одеяла будут предоставлены

Все свои вопросы можно задать организаторам в @androidacademyminsk
#RenderScript #Image

RenderScript - это фреймворк для выполнения сложных вычислений с высокой производительностью. RenderScript предназначен для параллельных вычислений, задействуя для этого различные типы процессоров на устройстве: CPU и GPU. Распространенное применения - обработка фотографий или компьютерное зрение.

https://github.com/rumboalla/coolrs - это библиотека, которая предоставляет различные эффекты для изображений
#Dagger #UnderTheHood

Dagger Android — Behind the Scenes

Самый популярный фреймворк для DI на Android - Dagger 2. Для фан базы создатели этого DI реализовали специальное расширение Dagger - dagger-android. Суть его в том чтобы упростить доставку зависимостей в Android компоненты.

Стало ли это проще? Спорно. Чтобы все это работало надо еще написать кучу кода и добавить отдельный процессор аннотаций.

В статье разбирается как под капотом работает dagger-android и чего стоит его удобство
#Jetpack

AndroidX Release Notes RSS

Google наконец-то упростила отслеживание обновление в Jetpack/AndroidX и предоставили RSS. C другой стороны каждое обновление вы можете найти в #JetpackWeekly с более подробным описанием.
#Gradle

Avoiding dependency hell with Gradle 6

Недавно вышедший Gradle 6 значительно расширил возможности по управлению зависимостями и более гибко управлять ими. Например избегать какой либо версии зависимости или использовать только допустимую версию.

Также вся эта информация записывается в специальный файл Gradle Module Metadata и загружается при публикации в репозиторий, так что все сторонние библиотеки также теперь могут использовать всю мощь ограничений и поставлять ее пользователям.

Также была значительно переработана документация по управлению зависимостями.
В прошлом году прошел первый курс SchoolKt. В начале следующего хочется сделать его продолжение. Какой формат вы хотели бы увидеть?
Final Results
4%
Сделать курс "Basic Kotlin" (с нуля)
42%
Сделать курс "Advanced Kotlin"
35%
Сделать курс с упором на Kotlin в Android
9%
Сделать воркошопы по отдельным темам
10%
Не интересует
#GooglePlay

Still Using InstallBroadcast? Switch to the Play Referrer API by March 1, 2020

Google предупреждает всех тех кто отслеживает источник установки приложения из Google Play (рекламный баннер, поиск и пр.) пора отказываться от INSTALL_REFERRER broadcast и мигрировать на Play Install Referrer Library. Старое API будет отключено 1 марта 2020 года
#Kotlin #Course #Online

Learn Advanced Android Development in Kotlin

Недавно Google представила курс "Advanced Android development in Kotlin". Бесплатный онлайн курс научит вас продвинутым навыкам для разработки Android приложений, используя Kotlin.
К моей недавней статье "Injection into Android Component’s Constructors is real" сделал замечание разработчик Fragment-ов Ian Lake.

Он поделился тем что child fragment по умолчанию используют FragmentFactory parent fragment. Для FragmentActivity и Fragment в ней это не работает 😐
Android Broadcast
В прошлом году прошел первый курс SchoolKt. В начале следующего хочется сделать его продолжение. Какой формат вы хотели бы увидеть?
Спасибо всем кто поучаствовал в опросе. В ближайшее время я буду формировать программу и собирать команду. Буду рад услышать от вас предложения по темам. Присоединяйтесь в Slack SchoolKt чтобы обсудить что вы хотите услышать и увидеть на курсе. Сейчас именно вы влияете на программу!
#ArchitectureComponents #Navigation #DynamicFeature

Navigation with Dynamic Feature Modules

Android Architecture Components - набор библиотек, который решил много проблем Android разработчиков и дал множество простых решений, одним из который является Navigation, который упрощает переходы между экранами в Android приложениях.

В свою очередь Google до сих пор не представила стабильного решения (пока есть только SNAPSHOT сборки) для навигации по приложению, когда вы используете Dynamic Delivery.

В статье описывается способ как с помощью Deep Link и Activity медиатора для обработки все таких ссылок достигается зен Navigation + Dynamic Delivery.
#Animation

Easy Reveal Android Library

Библиотека, которая упростит вам создание анимации Reveal в разных ее проявлениях: круговой, волна, звезда и пр.
#Kotlin

Вышел Kotlin 1.3.60 и будущие изменения в Kotlin 1.4

В новой стабильной версии языка вас ждут следующие улучшения:
👉 Улучшение работы Inline классов
👉 Более подробные сообщения об ошибках
👉 IDEA: Улучшена поддержка Scratch файлов
👉 IDEA: Улучшена поддержка Gradle Kotlin DSL
👉 IDEA: Улучшение дебага
👉 IDEA: Улучшение автодополнения
👉 IDEA: Новый конвертер из Java в Kotlin

Также стало известно, что Kotlin 1.4 выйдет когда-то в 2020😁, но уже сейчас можно попробовать функции из новой версии, которые уже готовы:
👉 NPE assertions: теперь выбрасывается NullPointerException вместо IllegalStateException, в случае когда вы сталкиваетесь с null из Java кода в Kotlin, там где это не ожидается
👉 Break & continue внутри when
👉 Улучшения в tail-recursive функциях
👉 Запрет на использование open tailrec функций
#Testings

Pixel perfect UI: How to automatize automation testing on Android

Краткий рассказ о подходе к тестированию вашего UI по скриншотам для проверки что при изменении кода или ресурсов в одних местах у вас не едет код в других.
#AndroidDevSummit

Итоги Android Dev Summit 2019

Я давно обещал сделать подведение итогов Android Dev Summit 2019. Прошёл уже месяц, но в итоге я это сделал! Просмотрел много статей, видео и перечитал статьи. Видео содержит мое личное мнение по поводу множества новинок. Буду рад услышать и ваше в @android_broadcast_discussions
#Kotlin

Type-safe time calculations using Duration

В Kotlin 1.3.50 был добавлен новый класс Duration (в статусе experimental), цель которого избавиться от вечного использования long в качестве продолжительности и дать полноценные возможности и более строгие проверки в compile time для типов.

Duration - это inline класс и его влияние на производительность минимально.