Size: a a a

Android Broadcast

2019 November 20
Android Broadcast
#Kotlin

Type-safe time calculations using Duration

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

Duration - это inline класс и его влияние на производительность минимально.
источник
2019 November 21
Android Broadcast
#WorkManager

Unifying Background Task Scheduling on Android

Google проводит унификацию своих библиотек для выполнения задач в фоновом режиме. Суть проста - все мигрируем на WorkManager.

Если кто-то пользуется FirebaseJobDispatcher (FJD) или GCMNetworkManager (GCM), то вам пора браться за гайды по миграции: для FJD и для GCM. Поддержка FJD будет закрыта в апреле 2020, GCM - ноябрь 2020.

Если вы обновите targetSdk вашего приложения до Android 10 (API level 29), то FJD и GCM перестанут работать на Android 6.0+
источник
Android Broadcast
#Calendar

Android Calendar Intent

Подробная инструкция того как работать с системным календарем в Android:
👉 Создать событие
👉 Открыть календарь на необходимой дате или событие
👉 Доступ к деталям события по id

Все описано очень хорошо и подробно!
источник
Android Broadcast
#Kotlin

Kotlin Delegates in Android: Utilizing the power of Delegated Properties in Android development

Рассказ о возможностях Kotlin delegated properties для решения различных Android задач:
👉 Работы с аргументами в Fragment
👉 Работа с SharedPreference
👉 Работа с составными собственными View

Но помните, что делегаты имеет скрытую цену!
источник
2019 November 22
Android Broadcast
#Security

How to enable logging on any released Android app

Убираете ли вы логирование кода из релизного билда? Именно убираете а не отключаете. Когда в вашем коде остается возможность включить логи - это потенциальная дыра в безопасности и она подробно разбирается в статье.


Чтобы удалить логирование с помощью Logcat вы можете воспользоваться R8/ProGuard для удаления кода:
-assumenosideeffects class android.util.Log {
   public static *** d(...);
   public static *** v(...);
   public static *** i(...);
   public static *** w(...);
   public static *** e(...);
}
источник
2019 November 23
Android Broadcast
#Room #SQLite

Database relations with Room

Статья о поддержки отношений между сущностями в SQLite с помощью аннотации @Relation в Room:
👉 1  -  1
👉 1  - N
👉 M - N

Плюс аннотации @Relation над полем, в том, что связанные сущности из другой таблицы будут запрашиваться автоматически.
источник
2019 November 25
Android Broadcast
#Gradle #AndroidGradlePlugin

Simple Guide to Android Product Flavors

Разбор в подробностях различных сборок приложения и как этот механизм реализован в Android Gradle Plugin c помощью Product Flavor и Build Type.
источник
Android Broadcast
#JetpackWeekly #Benchmark #ViewPager2

Jetpack Weekly #12
🔥 Benchmark теперь стабильна. Начинайте измерять производительность вашего кода правильно!
🔥 ViewPager мертв. Да здравствует ViewPager2, который базируется на RecyclerView!
👉 RecyclerView 1.1.0
👉 Exifinterface 1.1.0
🛠️ Room 2.2.2 с исправлениями багов
источник
Android Broadcast
#Podcast

Android Dev Podcast перешел в английскую версию.Новый подкаст - это не дубляж уже существующего, а возможности приглашение новых гостей.

Например, совсем недавно появился выпуск в котором Денис Неклюдов взял интервью у основателя и CEO Gradle Hans Dockter. В рамках Android Dev Summit ребята сделали обзор новостей с Florina Muntenescu, Android Developer Advocate в Google.
источник
Android Broadcast
#AndroidBroadcastBreakfest #Minsk #Meetup

Всем привет! Общение - это то, что позволяет нам эффективнее делиться знаниями и понимать друг друга. Намного эффективнее что-то обсудить голосом, чтобы найти эффективное решение или вдохновиться мыслью.

В эту субботу (30 ноября) в 11.00 в Минске я предлагаю встретиться всем желающим в кофейне GrayHouse (пр. Дзержинского, 11, метро "Грушевка"). Формат проведения встречи - свободное общение.

Тема встречи - Dependency Injection:
👉 Настолько ли важная роль DI? Есть ли жизнь без?
👉 Как заставить Dagger стать удобным инструментом, а не причинять кучу боли
👉 Koin и Kodein - есть ли жизнь с ними в больших проектах
👉 Отказ от библиотек для DI и решение доставки зависимостей самостоятельно

Задавайте свои вопросы, слушайте разговоры, любое ваше участие важно и позволит вам улучшить свои знания!

Есть вопросы или другие вопросы для обсуждения - предлагайте их в @android_broadcast_discussions
источник
2019 November 26
Android Broadcast
#CodeQuality #Kotlin

Вышел Detekt 1.2.0

В новой версии появились следующие улучшения:
👉 Улучшен HTML отчет
👉 Поддержка отключения правил по группам
👉 Поддержка параллельной фаз компиляции и анализа
👉 Исправление работы правил
👉 Улучшение определение текста во множестве правил
источник
Android Broadcast
#Dagger

Dagger Party Tricks: Refactoring

Dagger не прост, совсем не прост. Поэтому постигать его дзен можно всю свою карьеру разработчика, если она не закончится раньше чем вы сможете освоить полностью все. В статье вы найдете немного Dagger дзена.
источник
Android Broadcast
#Kotlin #Parcel

A study of the Parcelize feature from Kotlin Android Extensions

В Kotlin 1.3.40 Parcelize стало стабильным, но только с версии 1.3.60 Android Studio перестало жаловаться, на его нестабильный статус, поэтому как никогда стоит напомнить, что есть способ сохранять ваши данные с использованием Parcel.

В статье разбирается как использовать библиотеку и какой код генерируется под капотом.
источник
2019 November 27
Android Broadcast
#Kotlin #Coroutines #Arhitecture

Lessons learnt using Coroutines Flow in the Android Dev Summit 2019 app

"Kotlin First" - лозунг современной Android разработки. В этом случае нельзя не использовать Kotlin Coroutines, чтобы максимально стремиться к этому принципу и получить все преимущества языка.

Авторы приложения для Android Dev Summit 2019 о том, как изменился их взгляд с появлением Flow в разработки Domain (UseCase) и Model (Repository, Data Source) слоев.

Обновление подхода просто. Если раньше ваш слой модели мог возвращать LiveData (например за наблюдением обновление обновление в Room), то теперь все это переходит во Flow и превращается в LiveData только в ViewModel. Если вам не нужно наблюдать за изменениями - используйте обычные suspend функции.

В статье также рассказывается как перейти со старых подходов на Flow и как применять его в новом API. Ну и как же без освещения тестирования!
источник
Android Broadcast
#Obfuscation #Resources #Optimization

AabResGuard - A tool used to obfuscate aab resources

Чтоба защитить свой код от злоумышленников и оптимизировать его исполнение в Android разработке применяют R8/ProGuard. Но эти утилиты оптимизируют только Java byte code. А что с остальными файлами в AAB/APK? Ответ - ничего. Google не предоставляет каких либо инструментов для оптимизации ресурсов.

Энтузиасты решили исправить это и сделать тулзу, которая сможет выполнять с ресурсами:
🔥 Убрать дублирующиеся значения
🔥 Удалять ненужные файлы из папок META-INFO/ и lib/
🔥 Обфусцировать названия ресурсов
🔥 Удалять заданные строки из конечной билда

Проект пока находится в стадии разработке, но я с нетерпением жду стабильного релиза!
источник
Android Broadcast
#RecyclerView #Sticky

Для всех тех кто реализует секции и sticky header в списках на основе RecyclerView появился новый игрок среди библиотек - StickyDecorator.

Библиотека легковесна и некоторые из декораций делает на основе Drawable, что позволяет достичь более высокой скорости работы по сравнению с View.
источник
Android Broadcast
#AndroidStudio

Android Studio Design Tools UX Changes — Split View

До релиза Android Studio 3.6 осталось не так много времени.Одним из заметных нововведений для всех тех кто работает с UI станет изменение отображения Design Tool. Новый режим, который назван Design Tools Split View, заменивший старый Layout Preview, теперь позволяет на одном экране совмещать редактор UI в XML и визуальный редактор.

В статье рассказывается о преимуществах этого обновления (на мой взгляд очень спорных).
источник
Android Broadcast
Рады ли вы обнволению Design Tools?
Анонимный опрос
12%
Раньше было лучше (Layout Preview)
43%
Рад 😁
32%
Не использую Android Studio 3.6
2%
Не пишу UI
12%
Другой вариант
Проголосовало: 241
источник
2019 November 28
Android Broadcast
#MemoryLeak

Вышел Leak Canary 2.0

Вышла новая мажорная версия популярного инструмента для отслеживания утечек памяти во время работы приложения. В новой версии произошла уйма изменений:
👉 Библиотека полностью переписана на Kotlin
👉 Улучшен механизм сборки дампов памяти, что будет меньше блокировать работу с приложением
👉  Новый UI для просмотра информации о утечках памяти
👉  Новая библиотека LeakSentry, которая позволяет определить когда происходит утечка и вызывает LeakCanary для сбора информации. Это поможет понять какие объекты приводят к OutOfMemoryError
👉  Новый парсер heap, который работает эффективнее и быстрее
👉  Упрощена настройка библиотеки - 0 строк кода для включения, только добавление зависимости
👉  Новая утилита Heap Explorer, которая позволяет делать анализ heap в LeakCanary прямо на устройства
👉  Из коробки поддерживает отслеживание за утечками Fragment
👉  Новая библиотека Shark, которая используется LeakCanary для анализа и может запускать в любой Java VM. Также доступен CLI, который вы можете использовать с компьютера для сбора информации о расходе памяти с устройства


В обновление произошли значительные изменения API, поэтому если вы активно его использовали (а не просто подключали библиотеку), то вам надо будет выполнить миграцию. Больше информации на официальном сайте.
источник
Android Broadcast
#Java #Java14

Пробуем улучшенный оператор instanceof в Java 14

Пока Android разработчики сконцентрировались на Kotlin (да и Google не собирается никого разворачивать от этого пути), разработчик Java нагоняют по наличию фичей современные языки-хипстеров. В Java 14 нас ждет аналог Smart Cast из Kotlin - Pattern Matching.
источник