Android Broadcast
14.1K subscribers
3.38K photos
275 videos
11 files
5.67K links
Подборка новостей и статей для Android разработчиков.

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

РКН https://abdev.by/rkn_tg_ab
Download Telegram
#Architecture #Modularization #ArchitectureComponents

Modularization by Feature and Layer with Android Architecture Components

Команда Android в последние 2 года активно стала решать трудности, связанные с разработкой эффективной архитектуры для Android приложений. Результат этого - Android Architecture Components.

Трендом текущей Android разработки является модуляризация. Она дает плюсы в архитектуре, более высокую скорость сборки проектов и возможность использовать Dynamic Features.

Как позволяет это реализовать текущий стек Architecture Components вы найдете в статье
#AndroidX #News #AndroidXWeekly

Android Jetpack - это множество библиотек (аж 74 группы библиотек!). В них постоянно происходят улучшения и обновления. Следить за этой информацией неудобно и я решил каждую неделю делать краткий обзор изменений.
#AndroidX #AndroidXWeekly

AndroidX Weekly Update #1

Произошли следующие обновления:
👉 Fragment 1.1.0-rc03
Правка бага перед релизом стабильной версии 1.1.0

👉 Navigation 2.1.0-beta02
Удалена зависимость на JaCoCo

👉 ViewPager2 1.0.0-beta02
Удалена зависимость на JaCoCo. Список багов все ещё большой 😞

👉 WorkManager 2.2.0-beta02
Удалена зависимость на JaCoCo

👉 Test 1.2.1-alpha02
Обновление версий зависимостей до соответствующих alpha версий
#WorkManager

Вышел WorkManager 2.1.0

Изменения по сравнению с версией 2.0.1:
👉 work-runtime-ktx требует Java 8
👉 Отложенная инициализация WorkManager
👉 PeriodicWorkRequest теперь поддерживает начальную задержку
👉 Добавлена возможность делегирования WorkerFactory с помощью DelegatingWorkerFactory
👉 Добавлена возможность задавать Executor, используемый WorkManager
👉 Добавлены TestWorkerBuilder и TestListenableWorkerBuilder, которые позволяют писать unit тесты Worker и ListenableWorker
👉 Добавлено возможность получения количества попыток в WorkInfo
👉 Возможность добавления в Data Byte и Array<Byte>
👉 WorkManager теперь зависит от Room 2.1.0, что должно исправить часть багов с БД
#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%
Норм
64%
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. Я сам сталкивался с такими же проблемами, так как не всегда ошибки, не позволяющие вашему приложению нормально работать, приводят к ошибки во время сборки.