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
#Animation

Вышла Lottie 3.1.0

В новой версии произошли небольшие изменения API, улучшение производительности и багфикс.
#Immersive

Gesture Navigation: Immersive Modes (IV)

Продолжение серии статей о адаптации приложений под новую систему навигации жестами в Android 10. В новой части речь зайдет о Immersive Mode
#JetpackCompose

Пробуем Jetpack Compose в бою?

Первая dev версия развязала руки разработчикам и как бы Google не стала останавливать людей от интеграции Jetpack Compose в production приложения, найдутся те кто это станет сделать.

В статье описаны впечатления разработчика от интеграции Jetpack Compose для простого "About" экрана в приложении.

Танцев с бубном было много и диагноз следующий "Абсолютно понятно, что Compose не готов к применению даже в маленьких боевых приложениях"
#Coroutines #LiveData #Test

Testing two consecutive LiveData emissions in Coroutines

Kotlin Coroutines получают все большую популярность и активнее интегрируются в последние решения от Google, поэтому стоит рассматривать подходы, которые рекомендуется использовать.

В статье рассматривается проблема тестирования эмита 2 последовательных значений LiveData, одно из которых приходит из Coroutine.

Автор рассказывает о нескольких решениях:
1️⃣ TestCoroutineDispatcher из библиотеки kotlinx.coroutines.test, который позволяет приостанавливать и возобновлять CoroutineDispatcher
2️⃣ Использование LiveData.asFlow(). Пример можно найти в Pull Request

Хорошие практики использования Dispatcher-ов в тестах:
👉 Не используйте стандартный класс Dispatchers, а доставляйте зависимости сами с помощью DI. Это позволит вам подменять их в тестах и иметь больший контроль
👉Используйте TestCoroutineDispatcher вместо Dispatchers.Unconfined для тестов. TestCoroutineDispatcher дает больше гибкости для тестирования, чем Dispatchers.Unconfined, но последний все также может успешно выполнять Coroutine синхронно.
#Arhitecture #CleanArhitecture

Why you need Use Cases/Interactors

Разбор роли Use Case/Interactor в Clean Architecture:
👉 Слои Clean Arhitecture
👉 Почему Presenter/ViewModel не должны общаться с источниками данных напрямую
👉 Бесполезный Use Case
👉 Когда использовать Use Case
👍1
#Kotlin #Coroutines

How can we use CoroutineScopes in Kotlin?

Structured Concurrency - это хороший подход, который был применён в Coroutine. Также он очень хорошо лег на Android, где есть компоненты с жизненным циклом, например Activity или Fragment.

В статье подробно разбирается CoroutineScope:
👉 Создание CoroutineScope
👉 Принцип работы Coroutine в рамках CoroutineScope
👉 CoroutineScope + Flow
👉 CoroutineScope + Channel
👉 Переключение CoroutineScope
#NDK

Introducing NDK r21

Вышла новая версия Android NDK - 21. Пока только в Beta, но новая версия привнесла важные новости:
👉 Первая версия с длительной поддержкой (LTS)
👉 LTS релизы будут выходить каждый год
👉 Отказ от поддержки Windows x32
👉 Обновление GNU Make до 4.2
👉 Обновление GDB до 8.3
👉 Обновление LLVM до r365631 (master 10 Июля 2019)
👉 Обновление libc++ до r369764
👉 Fortify включается по умолчанию при использование ndk-build или CMake toolchain
👉 ARM код теперь по умолчанию собирается с Neon по умолчанию. Это позволяют коду работать эффективнее

Хотите узнать что будет дальше, то смотрите Roadmap
#Exception

Обработка ошибок в Kotlin/Java: как правильно это делать?

Ошибки - это то с чем мы постоянно сталкиваемся в наших программах. Они возникают по вине программиста либо по причинах среды выполнения: отсутсвие сети, ошибка в данных, отсутствие места на диски и др.

Как с этим бороться? В статье вы найдете различные подходы:
👉 try-catch
👉 Sealed классы для представления успешного результата и ошибок
👉 Функциональный тип программирования Either
👉 Использовать Option
👉 Nullable тип из Kotlin
👉 Хардкодное значение как маркер ошибки (например -1 для метода, который возвращает int)
#Coroutines #Coroutines

Making Android unidirectional data flow with Kotlin coroutines 🦄

Разбор нового взгляда на архитектура от автора библиотеки Koin. Архитектура строится на основе Architecture Components и Kotlin Coroutines и основными компонентами в ней являются ViewModel, Actions & States.

Новый взгляд вылился в фреймворк Uniflow, который еще находится в разработке.
#GestureNavigation #Android10

Gesture Navigation: Handling gesture conflicts

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

Fighting Regressions with Benchmarks in CI

Одна из новинок Android - библиотека Jetpack Benchmark, уже успела дойти до первой беты. Библиотека позволяет вам писать правильные тесты производительности. Библиотека отвечает за "разогрев" устройств для теста, определение проблем конфигурации и замер производительности вашего кода.

В статье рассматривается как команда Jetpack тестируется производительности своих библиотек на CI и определяет регрессии в скорости их работы.
Понравилась вам идея с обзором конференции?
Final Results
69%
Да, стоит делать такое в будущем
3%
Да, но больше не стоит
4%
Нет
24%
Не читал
#Kotlin

The problem with extension functions

Extension функции - одна из самых популярных и любимых функций разработчиков, использующих Kotlin. Extension функции позволили решить проблему с расширением API классов, делать его консистентным со сторонни и использовать новые подходы для проектирования API.

Что с этой прекрасной возможность языка может быть не так? Как с этим связано Kotlin DSL? В этом разбирается Мартин Москала
#новости

По семейным обстоятельствам я беру перерыв на ближайшие 2 недели. Что это значит? Частота новостей будет снижена и новости будут выходить реже.
#Automotive

Android Automotive OS updates for developers

Google развивает свою ОС для автомобилей - Android Automotive OS (не путайте с Android Auto).

Отличие этих ОС в том, что Android Automotive встраивается в ваш автомобиль, имеет доступ к датчикам автомобиля и может работать независимо от внешнего устройства. Для работы Android Auto требуется подключение смартфона на Android и она выступает простой медиа системой и имеет доступ только к датчикам телефона.

Google добавили возможность использовать эмулятор Android Automotive OS с магазинон Google Play. Уже сейчас вы можете запросить доступ к консоле Google Play для новой ОС от Google.
#Dagger #Multibindings

Dagger 2 Multibindings Illustrated

Dagger 2 имеет множество возможностей, хотя множество разработчиков используют его по простому сценарию: "1 модуль. 1 компонент. @Inject. AppComponent.inject(...)". Но в Dagger есть много интересного функционала. Например, Multibinding, который позволяет вам объединять зависимости одного типа из разных модулей и компонентов в Set или Map.

Когда это может пригодиться? Когда у вас есть обработчики для создания элементов по типу элементов. Это эффективно можно применить для выполнения доставки зависимостей в конструктор Fragment (поддерживается в androidx.fragment 1.1.0):
1. Предоставляете способ создания Fragment в Dagger модуле
2. Из Dagger вы можете получить Map<Class<Fragment>, Provider<Fragment>>

Код получается гибким и хорошо расширяемым. А значит мы и улучшили нашу архитектуру

В статье вы найдете руководство как использовать эту возможность библиотеки и делать архитектуру ваших приложений более гибкой.
#FBReader

Пишем читалку электронных книг на Android с помощью FBReader SDK

EPUB, FB2 и MOBI - это самые популярные форматы для распространения электронных книг. Для решения задачи интеграции отображения таких файлов можно воспользоваться FBReader SDK.

Библиотека имеет множество возможностей:
👉 Открытие множество файлов электронных книг
👉 Чтение метаданных из файла книги
👉 Особенности движка FBReader
👉 Возможность менять стиль текста книги и яркость
👉 Выделение текста
👉 Закладки
👉 Поиск по тексту
👉 Оглавление
👉 Дополнительная навигация по тексту
👉 Поддержка сносок и гиперссылок

Библиотека платная. В бесплатном режиме можно отображать только несколько первых страниц. Подробнее о ценах.