#Architecture #Modularization #ArchitectureComponents
Modularization by Feature and Layer with Android Architecture Components
Команда Android в последние 2 года активно стала решать трудности, связанные с разработкой эффективной архитектуры для Android приложений. Результат этого - Android Architecture Components.
Трендом текущей Android разработки является модуляризация. Она дает плюсы в архитектуре, более высокую скорость сборки проектов и возможность использовать Dynamic Features.
Как позволяет это реализовать текущий стек Architecture Components вы найдете в статье
Modularization by Feature and Layer with Android Architecture Components
Команда Android в последние 2 года активно стала решать трудности, связанные с разработкой эффективной архитектуры для Android приложений. Результат этого - Android Architecture Components.
Трендом текущей Android разработки является модуляризация. Она дает плюсы в архитектуре, более высокую скорость сборки проектов и возможность использовать Dynamic Features.
Как позволяет это реализовать текущий стек Architecture Components вы найдете в статье
Medium
Modularization by Feature and Layer with Android Architecture Components
Hello! In this story I want to have a quick look at modular android development in conjunction with android architecture components.
#AndroidX #News #AndroidXWeekly
Android Jetpack - это множество библиотек (аж 74 группы библиотек!). В них постоянно происходят улучшения и обновления. Следить за этой информацией неудобно и я решил каждую неделю делать краткий обзор изменений.
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 версий
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:
👉
👉 Отложенная инициализация WorkManager
👉 PeriodicWorkRequest теперь поддерживает начальную задержку
👉 Добавлена возможность делегирования WorkerFactory с помощью DelegatingWorkerFactory
👉 Добавлена возможность задавать Executor, используемый WorkManager
👉 Добавлены TestWorkerBuilder и TestListenableWorkerBuilder, которые позволяют писать unit тесты Worker и ListenableWorker
👉 Добавлено возможность получения количества попыток в WorkInfo
👉 Возможность добавления в Data
👉 WorkManager теперь зависит от Room 2.1.0, что должно исправить часть багов с БД
Вышел 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, что должно исправить часть багов с БД
Android Developers
WorkManager | Jetpack | Android Developers
#RecyclerView
A Custom LayoutManager Case: Bumble Beeline
История от разработчиков из Badoo как они писали свой собственный LayoutManager для RecyclerView.
A Custom LayoutManager Case: Bumble Beeline
История от разработчиков из Badoo как они писали свой собственный LayoutManager для RecyclerView.
Medium
A custom LayoutManager case: Bumble Beeline
A step by step guide to building a custom LayoutManager
#Kotlin #TypeAlias #InlineClass
Kotlin: Type aliases and inline classes
В Kotlin есть функционал, довольно схожий - Type Alias и Inline Class. Подробнее о этих фичах языка и отличиях вы можете узнать из статьи.
Kotlin: Type aliases and inline classes
В Kotlin есть функционал, довольно схожий - Type Alias и Inline Class. Подробнее о этих фичах языка и отличиях вы можете узнать из статьи.
Medium
Kotlin: Type aliases and inline classes
There is no doubt that Kotlin is here to stay for a long time.
#Performance
An idiomatic Android approach to measuring execution time
Хотите замерить время выполнения вашего кода на Android правильно? Тогда вам надо использовать утилитный класс TimingLogger, доступный с API Level 1!
Только не забудьте, чтобы TimingLogger работал необходимо выполнить следующую команду:
An idiomatic Android approach to measuring execution time
Хотите замерить время выполнения вашего кода на Android правильно? Тогда вам надо использовать утилитный класс TimingLogger, доступный с API Level 1!
Только не забудьте, чтобы TimingLogger работал необходимо выполнить следующую команду:
adb shell setprop log.tag.TimingLoggerDemo VERBOSE
Medium
TimingLogger: An idiomatic Android approach to measuring execution time
During your career as an Android developer you will eventually encounter some less than optimal performing code. Maybe this is code that…
#Dagger
Вышел Dagger 2.24
Вышла новая версия Dagger 2, которая не привнесла ничего значимого:
👉 Удалено устаревшее API из
👉 Исправление багов
Вышел Dagger 2.24
Вышла новая версия Dagger 2, которая не привнесла ничего значимого:
👉 Удалено устаревшее API из
dagger.android
Has{Activity,Fragment,Service,ContentProvider,BroadcastReceiver}
👉 Инкрементальный процессинг аннотаций теперь включён по умолчанию👉 Исправление багов
GitHub
Release Dagger 2.24 · google/dagger
Deprecations/removals
dagger.android's Has{Activity,Fragment,Service,ContentProvider,BroadcastReceiver} interfaces are now removed in favor of HasAndroidInjector (which can handle any type). H...
dagger.android's Has{Activity,Fragment,Service,ContentProvider,BroadcastReceiver} interfaces are now removed in favor of HasAndroidInjector (which can handle any type). H...
#RxJava
RxBinding 3.0
Как бы не штормило Jake Wharton новый мажорный релиза RxBinding вышел, что несомненно порадует всех любителей Rx. В версии 3.0 произошли следующие изменения:
🎉 Библиотека переписана на Kotlin
🎉 Миграция на AndroidX
👉 Удалены все deprecated методы
👉 Отказ от использования AutoValue в пользу Kotlin data классов
RxBinding 3.0
Как бы не штормило Jake Wharton новый мажорный релиза RxBinding вышел, что несомненно порадует всех любителей Rx. В версии 3.0 произошли следующие изменения:
🎉 Библиотека переписана на Kotlin
🎉 Миграция на AndroidX
👉 Удалены все deprecated методы
👉 Отказ от использования AutoValue в пользу Kotlin data классов
GitHub
RxBinding/CHANGELOG.md at master · JakeWharton/RxBinding
RxJava binding APIs for Android's UI widgets. Contribute to JakeWharton/RxBinding development by creating an account on GitHub.
#MVVM #AppArchitecture #ArchitectureComponents
Android MVVM — Do’s and Don’ts
Несколько рекомендаций при реализации архитектуры MVVM на основе Architecture Components:
👉
👉 View не должна содержать какой либо логики (быть пассивной). Место для всей логики - это
👉 ViewModel не должна иметь ссылки на View
👉 Если вы хотите получать обновления данных от
Android MVVM — Do’s and Don’ts
Несколько рекомендаций при реализации архитектуры MVVM на основе Architecture Components:
👉
ViewModel
не должна использовать классы из Android SDK. Используйте интерфейсы, которые позволят вам абстрагироваться от платформенной реализации.👉 View не должна содержать какой либо логики (быть пассивной). Место для всей логики - это
ViewModel
.👉 ViewModel не должна иметь ссылки на View
👉 Если вы хотите получать обновления данных от
LiveData
для обновления UI, тогда используйте viewLifecycleOwner.Medium
MVVM Do’s and Don’ts
Some ground rules to follow while using MVVM Architecture.
#Kotlin #Sequence
Collections and sequences in Kotlin
Kotlin имеет множество операторов для обработки коллекций, которые выполняются сразу же и создаются новые коллекции. Альтернативой ему служит Sequence API, которое реализует lazy API для обработки коллекций. В статье рассматриваются различия между этими подходами.
Collections and sequences in Kotlin
Kotlin имеет множество операторов для обработки коллекций, которые выполняются сразу же и создаются новые коллекции. Альтернативой ему служит Sequence API, которое реализует lazy API для обработки коллекций. В статье рассматриваются различия между этими подходами.
Medium
Collections and sequences in Kotlin
Working with collections is a common task and the Kotlin Standard Library offers many great utility functions. It also offers two ways of…
#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 делятся тем как интегрировать работу с библиотекой и какой эффект ее применения.
How Pandao Uses the In-App Updates Flexible Flow to Speed up the App Update Process on Android
Не так давно Google дала всем разработчикам доступ к In-App Updates, которая позволяет обновлять приложение изнутри. Разработчики из Pandao делятся тем как интегрировать работу с библиотекой и какой эффект ее применения.
Medium
How Pandao Uses the In-App Updates Flexible Flow to Speed up the App Update Process on Android
In-App Updates allows developers to deliver features, bug fixes, and performance improvements faster for active users.
#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
Регистрация уже открыта. Спешите пройти по ссылке
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 работает эффективнее если зависимости в
👉 Работа с generic в Kotlin и Java отличается, поэтому при inject зависимостей с generic вам будет полезна аннотация @JvmSuppressWildcards
👉 Будьте осторожны с использованием single line function, так как Dagger при построение графа опирается на возвращаемый тип. Указывайте явно возвращаемый тип всегда или используйте функции с телом.
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 при построение графа опирается на возвращаемый тип. Указывайте явно возвращаемый тип всегда или используйте функции с телом.
Medium
Dagger in Kotlin: Gotchas and Optimizations
Use Dagger in Kotlin! This article includes best practices to optimize your build time and gotchas you might encounter.
Считаете ли вы набор таких рекомендаций (больше это "костыли") удобным при работе с Dagger в Kotlin?
Anonymous Poll
28%
Норм
64%
Dagger - это всегда была боль
8%
Нет
#RecyclerView #DiffUtil #UnderTheHood
Разоблачаем магию DiffUtil
RecyclerView - компонент который есть в любом приложение. Он имеет возможность с помощью анимации показывать изменения данных в нем. Делается это довольно непросто, поэтому Google дала нам DiffUtil - утилита, которая за нас вычисляет разницу и анимирует список.
Для тех кто хочет понять как работает эта магия (а называется она алгоритм Майерса) ты вы можете узнать это от ребят из Redmadrobot. Объясняют довольно доступно и с красивыми иллюстрациями.
Разоблачаем магию DiffUtil
RecyclerView - компонент который есть в любом приложение. Он имеет возможность с помощью анимации показывать изменения данных в нем. Делается это довольно непросто, поэтому Google дала нам DiffUtil - утилита, которая за нас вычисляет разницу и анимирует список.
Для тех кто хочет понять как работает эта магия (а называется она алгоритм Майерса) ты вы можете узнать это от ребят из Redmadrobot. Объясняют довольно доступно и с красивыми иллюстрациями.
Хабр
Разоблачаем магию DiffUtil
Каждый Android-разработчик использовал RecyclerView для отображения списков и каждый сталкивался с проблемой обновления данных в списке, пока в 2016 году не появился магический класс DiffUtil. Я...
Переключение языка в Android-приложении
Как часто к вам приходит заказчик со своим видением как должно работать приложение в Android? Например, как должен меняться в нем язык (и плевать что этот функционал заложен в системе).
В статье вы найдете руководство как реализовать такую фичу и чтобы форматирование данных и разметка у вас были соответствующими.
Как часто к вам приходит заказчик со своим видением как должно работать приложение в Android? Например, как должен меняться в нем язык (и плевать что этот функционал заложен в системе).
В статье вы найдете руководство как реализовать такую фичу и чтобы форматирование данных и разметка у вас были соответствующими.
Хабр
Переключение языка в Android-приложении
Есть простой способ реализовать переключение языка в Single-Activity приложении. Стек экранов при этом подходе не сбрасывается, пользователь остается там, где переключил язык. Когда пользователь...
#AppBundle #ManifestMerger
Hunting a bug — A True App Bundle Debugging Story
При сборке вашего приложения одним из шагов является запуск Manifest Merger - утилиту, отвечающую за сбор манифестов из всех aar зависимостей, модулей и основного приложения, и получения финального AndroidManifest, который добавляется в APK.
В статье рассказывается как при использование App Bundle разработчик столкнулся с непонятным багом и каким путем прошел, чтобы найти проблему с объединением AndroidManifest. Я сам сталкивался с такими же проблемами, так как не всегда ошибки, не позволяющие вашему приложению нормально работать, приводят к ошибки во время сборки.
Hunting a bug — A True App Bundle Debugging Story
При сборке вашего приложения одним из шагов является запуск Manifest Merger - утилиту, отвечающую за сбор манифестов из всех aar зависимостей, модулей и основного приложения, и получения финального AndroidManifest, который добавляется в APK.
В статье рассказывается как при использование App Bundle разработчик столкнулся с непонятным багом и каким путем прошел, чтобы найти проблему с объединением AndroidManifest. Я сам сталкивался с такими же проблемами, так как не всегда ошибки, не позволяющие вашему приложению нормально работать, приводят к ошибки во время сборки.
Medium
Hunting a bug — A True App Bundle Debugging Story
Putting the light on the process of resolving an issue discovered when trying to publish an Android App Bundle on the Play Store.