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
#Kotlin #TypeAlias #InlineClass

Kotlin: Type aliases and inline classes

В Kotlin есть функционал, довольно схожий - Type Alias и Inline Class. Подробнее о этих фичах языка и отличиях вы можете узнать из статьи.
#Performance

An idiomatic Android approach to measuring execution time

Хотите замерить время выполнения вашего кода на Android правильно? Тогда вам надо использовать утилитный класс TimingLogger, доступный с API Level 1!

Только не забудьте, чтобы TimingLogger работал необходимо выполнить следующую команду:
adb shell setprop log.tag.TimingLoggerDemo VERBOSE
Пример использования TimingLogger
#News

Всем привет. Лего горячая пора и пора отпусков, вот и я решил отдохнуть и набраться сил. Уезжаю в небольшую поездку и оставляю комп дома, так как это единственный надежный способ не дать самому себе работать 😁

В связи с этим до следующей недели новостей не ждите.
#Dagger

Вышел Dagger 2.24

Вышла новая версия Dagger 2, которая не привнесла ничего значимого:
👉 Удалено устаревшее API из dagger.android Has{Activity,Fragment,Service,ContentProvider,BroadcastReceiver}
👉 Инкрементальный процессинг аннотаций теперь включён по умолчанию
👉 Исправление багов
#RxJava

RxBinding 3.0

Как бы не штормило Jake Wharton новый мажорный релиза RxBinding вышел, что несомненно порадует всех любителей Rx. В версии 3.0 произошли следующие изменения:
🎉 Библиотека переписана на Kotlin
🎉 Миграция на AndroidX
👉 Удалены все deprecated методы
👉 Отказ от использования AutoValue в пользу Kotlin data классов
#MVVM #AppArchitecture #ArchitectureComponents

Android MVVM — Do’s and Don’ts

Несколько рекомендаций при реализации архитектуры MVVM на основе Architecture Components:
👉 ViewModel не должна использовать классы из Android SDK. Используйте интерфейсы, которые позволят вам абстрагироваться от платформенной реализации.
👉 View не должна содержать какой либо логики (быть пассивной). Место для всей логики - это ViewModel.
👉 ViewModel не должна иметь ссылки на View
👉 Если вы хотите получать обновления данных от LiveData для обновления UI, тогда используйте viewLifecycleOwner.
#Kotlin #Sequence

Collections and sequences in Kotlin

Kotlin имеет множество операторов для обработки коллекций, которые выполняются сразу же и создаются новые коллекции. Альтернативой ему служит Sequence API, которое реализует lazy API для обработки коллекций. В статье рассматриваются различия между этими подходами.
#GooglePlay #InAppUpdates

How Pandao Uses the In-App Updates Flexible Flow to Speed up the App Update Process on Android

Не так давно Google дала всем разработчикам доступ к In-App Updates, которая позволяет обновлять приложение изнутри. Разработчики из Pandao делятся тем как интегрировать работу с библиотекой и какой эффект ее применения.
#Kotlin #Conference #Minsk

7 сентября пройдет крутейшее событие в Беларуси по Kotlin - Kotlin/Everywhere Minsk. Вас ожидают известные спикеры из-за рубежа и нашей страны и классный материал по использованию Kotlin!

В списке спикеров уже подтверждены:
👉 Мarcin Moskala@KtAcademy
👉 Ильмир Усманов@JetBrains
👉 Marharyta Nedzelska@WIX, Kiev Kotlin User Group Lead
👉 Леонид Старцев@JetBrains
👉 Олег Семен@Lviv Kotlin User Group Lead
👉 Nicolas Fränkel@Exoscale

Регистрация уже открыта. Спешите пройти по ссылке
#Kotlin #Dagger #BestPractices #DependencyInjection

Dagger in Kotlin: Gotchas and Optimizations

Dagger на сегодня является самым популярным DI для Android. Почему так? Он богат возможностями, не использует рефлексию и проверят ваш граф во время компиляции.

Для всех любителей Kotlin использование Dagger порой является неудобным и трудным в силу того, что эта библиотека изначально разрабатывалась для Java и до сих пор на официальном сайте нет полноценного руководства как ее лучше использовать с Kotlin.

Команда Android решила исправит это и дать ряд рекомендаций:
👉 Всегда используйте последнюю версию Dagger (сейчас это 2.24)
👉 Включите инкрементальную компиляцию Dagger в kapt
👉 При выполнение inject зависимости в непубличное свойство класса, задавайте квалификатор на поле
👉 Dagger работает эффективнее если зависимости в @Module предоставляются через статические методы. Используйте object для объявления @Module и добавляйте аннотацию @JvmStatic к каждому методу @Provides.
👉 Работа с generic в Kotlin и Java отличается, поэтому при inject зависимостей с generic вам будет полезна аннотация @JvmSuppressWildcards
👉 Будьте осторожны с использованием single line function, так как Dagger при построение графа опирается на возвращаемый тип. Указывайте явно возвращаемый тип всегда или используйте функции с телом.
Считаете ли вы набор таких рекомендаций (больше это "костыли") удобным при работе с Dagger в Kotlin?
Anonymous Poll
28%
Норм
63%
Dagger - это всегда была боль
8%
Нет
#RecyclerView #DiffUtil #UnderTheHood

Разоблачаем магию DiffUtil

RecyclerView - компонент который есть в любом приложение. Он имеет возможность с помощью анимации показывать изменения данных в нем. Делается это довольно непросто, поэтому Google дала нам DiffUtil - утилита, которая за нас вычисляет разницу и анимирует список.

Для тех кто хочет понять как работает эта магия (а называется она алгоритм Майерса) ты вы можете узнать это от ребят из Redmadrobot. Объясняют довольно доступно и с красивыми иллюстрациями.
Переключение языка в Android-приложении

Как часто к вам приходит заказчик со своим видением как должно работать приложение в Android? Например, как должен меняться в нем язык (и плевать что этот функционал заложен в системе).

В статье вы найдете руководство как реализовать такую фичу и чтобы форматирование данных и разметка у вас были соответствующими.
#AppBundle #ManifestMerger

Hunting a bug — A True App Bundle Debugging Story

При сборке вашего приложения одним из шагов является запуск Manifest Merger - утилиту, отвечающую за сбор манифестов из всех aar зависимостей, модулей и основного приложения, и получения финального AndroidManifest, который добавляется в APK.

В статье рассказывается как при использование App Bundle разработчик столкнулся с непонятным багом и каким путем прошел, чтобы найти проблему с объединением AndroidManifest. Я сам сталкивался с такими же проблемами, так как не всегда ошибки, не позволяющие вашему приложению нормально работать, приводят к ошибки во время сборки.
#GooglePlay

Make stronger decisions with new Google Play Console data

Google Play представило обновление, которое позволяет вам эффективнее измерять и анализировать статистику вашего приложения!
#GestureNavigation #AndroidQ

Gesture Navigation: Going edge-to-edge

В Android Q была добавлена новая система навигация жестами. Это новинка позволяет приложениям отображаться от края до края вашего экрана! В статье разбирается все особенности новой фичи и адаптации вашего приложения к ней.
#UnderTheHood #Text #Performance

Отображение текста в Android

Отображение текста одна из самых тяжелых графических операций в UI, так как для того чтобы нарисовать текст нужно сделать множество просчетов. Отключение переноса слов и перенос measuring текста в фоновый поток значительно разгружают ваш UI. Что же такого происходит под капотом в TextView?

В статье вы найдете подробный разбор как объекта строки превращается в картинку на экране:
👉 Нативные библиотеки под капотом
👉 Как происходит перенос текста на новую строку
👉 Использование различных стилей в TextView
👉 Spanы
👉 Как текст располагается в TextView
👉 Оптимизация производительность TextView
#Retrofit #Coroutines #UnderTheHood #JakeWharton

Exceptions and proxies and coroutines, oh my!

В Retrofit 2.6.0 была добавлена поддержка Kotlin Coroutine - функции в интерфейсе Retrofit можно помечать ключевым словом
suspend
. Что стоит за этой реализацией? Какие образом Java Dynamic Proxy может работать с Coroutine? В своей статье Jake делает разбор