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

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

РКН https://abdev.by/rkn_tg_ab
Download Telegram
#AnnotationProcessor #kapt

Making incremental KAPT work

Все мы хотим быструю сборку проектов, но современная Android разработка переполнена различными библиотеками с процессорами аннотаций: Dagger, Glide, AndroidX, Room, Butterknife и пр. Их проблема заключается в том, что каждое изменение кода приводит к повторной генерации кода всеми процессорами.

Эту проблему решили в Gradle 4.7, добавив поддержку инкрементальной компиляции в процессорах аннотаций. К сожалению, из коробки это не работает и требует усилий разработчиков библиотек.

В Kotlin 1.3.31 в kapt добавили поддержку инкрементальной компиляции. Руководство по настройке вы найдете в статье.

Замечание: Gradle модуль будет работать с инкрементальным процесингом аннотаций только если все процессоры, использующиеся в модуле, поддерживают эту возможность.
#Gson

Kson - генерация Gson TypeAdapter & Factory для Kotlin data классов

Большинство современных решения для сериализации/десериализации JSON используют рефлексию, которая несете в себе низкую производительность и невозможность оптимизации кода при компиляции. Kson - библиотека, которая была создана с целью чтобы избавить вас от этого.
#KotlinEverywhere

Kotlin/Everywhere Minsk уже 7 сентября

Последние пару сообщества GDG Minsk и Belarusian Kotlin User Group упорно трудились над тем чтобы сообщить - 7 сентября состоится конференция Kotlin/Everywhere Minsk. Этот ивент является часть большой программы Kotlin/Everywhere от Google и JetBrains. Сейчас мы в начале пути самого масштабного события для наших сообществ. Следите за новостями в @gdgminsk_news и @belarus_kug!

Для тех кто хочет стать спикером открыто CFP
#Room #SQLite #ArchitectureComponents

Вышел Room 2.1.0

Вышла новая версия Room в которой появились следующие возможности:
👉 Поддержка FTS
👉 Поддержка AutoValue
👉 Улучшена поддержка RxJava
👉 Поддержка Kotlin Coroutines (пока только suspend функции, ждем поддержки Channel и Flow)
👉 SQL view на основе аннотации @DatabaseView
👉 Исправление багов
#DeepLink

How to manage a complex DeepLinks scheme on your Android App

Используете ли вы у себя deep link в приложениях? Когда у вас всего несколько ссылок, то объявление их простое, но с ростом их количества растет и сложность их описания. Android не поддерживает богатых регулярных выражений для описания deep link.

В статье рассматривается Gradle плагин manifestreplace-plugin, который упрощает описание deep link-ов.
#Koin #Dagger #DependencyInjection

KOIN for DEPENDENCY INJECTION on Android ► Is Dagger dead?

Актуален ли все еще Dagger 2 для Android разработки, когда Kotlin - основной язык для создания приложений под эту платформу и есть Koin? Разбор этого проводит Antonio Leiva - сертифицированный JetBrains тренер по Kotlin
#ArchitectureComponents #BestPractices

Распространенные ошибки при использовании Android Architecture Components

Повторение - мать учения. Поэтому рекомендую освежить или наоборот ознакомиться с рекомендациями по использованию Architecture Components:
1️⃣ Утечка LiveData Observer в Fragment
2️⃣ Повторная загрузка данных после смены конфигурации
3️⃣ Утечка ViewModel
4️⃣ Позволять View изменять LiveData
5️⃣ Создание зависимостей ViewModel после каждого изменения конфигурации
6️⃣ Хранение ссылки на View в ViewModel
#CleanArchitecture #Architecture #Kotlin #Multiplatform

Clean Architecture example with Kotlin Multiplatform

Хорошая архитектура - это неотъемлемая часть качественной разработки приложений. Поэтому все мы стараемся следовать Clean Architecture в разработке Android приложений. По ее правилам бизнес логика не должна быть привязана к платформе, а взаимодействие с платформенными частями должно осуществляться через абстракции - интерфейсы.

Что как не Kotlin Multiplatform (MPP) позволяет абстрагироваться от платформы и писать чистую БЛ. В статье рассматривается как это реализовать на примере разработки клиента для TMDb.

Замечание: Вы можете использовать аналогичные подходы без поддержки других платформ кроме как Android в MPP проектах
#Animations

Seamless Android app launch animations using Intent Source Bounds

Как кастомизировать анимацию запуска приложения из launcher, чтобы ваше приложение появлялось из иконки приложения с помощью различных анимаций: scale, circular reveal и др.?

Все это можно сделать при помощи Intent.setSourceBounds(Rect?). В статье вы найдете подробный разбор как реализовать анимацию запуска в своем приложении
#WorkManager #AndroidX

Workout your tasks with WorkManager — Intro

Первая статья из серии, включающих обзор модели памяти Android, существующих решениях для фоновых задач, что происходит под капотом и почему мы должны использовать WorkManager.

В первой статье рассматривается:
👉 Модель памяти Android
👉 Почему важная оптимизация расхода ресурсов (батарея, память и пр.)
👉 Существующие решения для работы приложения в фоне
👉 Почему и когда надо использовать WorkManager
TypedTextView

TextView c симуляцией набор текста
#Kotlin

Вышел Kotlin 1.3.40

Новинки минорного обновления языка:
👉 Новая система type inference развивается. В будущем она заменит текущую, но уже сейчас ее можно попробовать в IDE
👉 Новые функции для кодирования/декодирования строк в UTF-8
👉 Добавлена поддержка сторонних nullability аннотаций. Только в IDE 😞
👉 Появилась возможность получения reified типа с помощью рефлексии на JVM. Используйте функцию typeOf()
👉Оптимизированы trimIndent() и trimMargin(). Теперь для строковых констант они выполняются во время компиляции, а не во время выполнения кода.
👉 Улучшения в Multiplatform Project
👉 Улучшения в Kotlin/JS
👉 Улучшения в Kotlin/Native
👉 Исправление багов
#Новости

Зашел вечером и очень приятно удивился - канал набрал 500 подписчиков именно сегодня. На это ушло 240 дней. Спасибо каждому из вас!
#Room #ORM #AcrhitectureComponents

Migrating to Room in the real world — Part 1

Новые технологии появляются постоянно: Kotlin приходит на смену Java, корутины заменяют Rx, Architecture Components активнее используются для построения архитектуры приложения. Каково быть если ваш проект имеет большое количество legacy кода и вы уже работаете со старыми технологиями, но хотите мигрировать?

Ребята из Blinkist делятся своим опытом миграции с работы с SQLite на основе ContentValues и простой обертки Cupboard на Room.
#Kotlin

[Kotlin pearls 6] Extensions: The Good, The Bad and The Ugly

Kotlin extension function и property - это визитная карточка Kotlin для Java разработчиков. Разве что null safety может сравниться по популярности.

В статье происходит разбор этой функции языка, как она работает под капотом и случаи когда ее стоит использовать, а когда нет.
#RecyclerView #Performance

Smooth RecyclerView Scrolling in Android

Отображение списков - довольно популярная задача в современных мобильных приложениях. Требование к таким виджетам высоки - они должны обеспечивать быструю скорость работы и плавность отрисовки при работе пользователя с ними.

Как этого добиваться в RecyclerView? Используйте следующие советы хардкор уровня:
👉 Осуществляйте inflate view для ViewHolder в отдельном потоке при помощи AsyncLayoutInflater и создавайте пул из них
👉 Создайте очередь из UI операций для оптимизации выполнения onBindViewHolder()
👉 Используйте PrecomputedTextCompat, чтобы вынести расчеты для отображения текста на фоновый поток
#Compatibility

Android API Level, backward and forward compatibility

Подробный разбор вопросов версий Android SDK и как они влияют. В статье рассматривается:
👉 Что такое API и SDK ?
👉 Что значит API Level ?
👉 Как использовать compileSdkVersion, minSdkVersion и targetSdkVersion ?
👉 Как вы можете убедиться, что приложение будет работать нормально на устройствах с различными версиями ОС?
👉 Что такое forward & backward совместимость (compatibility)?
Forwarded from Mobile People Talks (Александр Денисов)
Асинхронность - знаешь что об этом ты? Part I

Первоначальной идеей этого выпуска было обсуждение асиннхронности, подходов и решений со всех, так сказать, четырех сторон. Сначала обсудить нативные темы, а потом обсудить кроссплатформенные решения. И начиналось все вроде бы хорошо, обсудили многопоточность, классические проблемы, языки, которые живут без этого, но потом Данис с Кириллом так увлеклись беседой о сходствах и различиях асинхронных подходов в Android и iOS, что на Flutter и React Native просто тупо не хватило времени!

🤪 Так что придется делать два выпуска по цене одного! Асинхронность Flutter vs ReactNative ждите в следующем!

🎧 SoundCloud
🎧 Apple Podcasts
#Meetup #MobilePeople #Minsk

27 июня состоится митап сообщества Mobile People. В рамках митапа вас ждут 2 доклада:

👉 Android: Under the Hood
Что общего между вашим мобильным телефоном и модемом Промсвязь? Что происходит при вызове startActivity(Intent)? Кто считает секунды до ANR? В своем докладе Дмитрий даст ответы на эти вопросы и раскроет детали работы Android О

👉 Kotlin Multiplatform – швейцарский нож мобильного разработчика
Kotlin Multiplatform – новый инструмент для решения разработки одного приложения для разных платформ. Хотите узнать как можно уже сейчас начать использовать Kotlin и Clean Architecture для разработки приложение под Android и iOS, какие есть ограничения и достоинства подхода? Алексей вам расскажет об этом на основе реального опыта разработки продакшен приложения.

Участие бесплатное по предварительной регистрации
Когда: 19.00, 27 июня 2019 (четверг)
Где: EPAM, ул. Академика Купреевича 3В, Loft