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

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

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

Introducing dual-screen layouts for Android

Microsoft готовит API для их двухэкранного устройства Microsoft Surface Duo. Устройство от Microsoft - это очередная попытка уйти от стандартного формата моноблока.
Microsoft Surface Duo
#Design

32 отличия дизайна мобильного приложения под iOS и Android

Статья которую я не смогу обойти, так как страдаю от дизайна, когда он не адаптируется под платформу и не использует всю прелесть Material Design, а может и наоборот - использует ее слишком, даже где не нужно. Да еще и дизайнеры зачастую - это пользователи Apple стороны и не знают пользовательского опыта Android.

Статья сможет показать различия и послужить аргументами в разговоре с ними. Что разбирается:
👉 Базовые отличия Humans Interface Guideline (HIG) и Material Design (MD)
👉 Отличия в навигации
👉 Отличия в компонентах (UI)
👉 Другие отличия: магазины, кликабельные зоны, splash экраны, форматы данных, дизайн пустых состояний и прочее
#RecyclerView

Merge adapters sequentially with MergeAdapter

Последняя альфа версия RecyclerView 1.2.0-alpha02 в котором появился MergeAdapter. Новый адаптер позволяет поочередно соединить в себе содержимое из нескольких адаптеров списка.

Примеры для его применения: добавление header и footer, отображение прогресса загрузки в списках с бесконечным скроллом и др.

В статье разбирается как завести новый MergeAdapter
#Опрос #Итоги

Известность команд мобильной разработки в 2020

Каждый год Егор Толстой проводит большой опрос среди мобильных разработчиков, который помогает оценить текущее состояние рынка и то, насколько вложения в технический бренд компаний влияют на их публичный образ.

И вот результаты для Android Broadcast. В прошлом году проекта даже не было в рейтингах, но в этом году смог отметиться по нескольким категориям:
🥉 Android Broadcast Podcast - 3-е место среди Android подкастов!
🏆 Android Broadcast Telegram канал - 1-е место среди новостных Android ресурсов
👨 Автор проекта, Кирилл Розов, появился в категории "За кем из экспертов в профессиональном сообществе в России вы следите?"! Это очень радует.

Спасибо всем читателям и тем кто поддержал проект. Буду радовать вас и в будущем интересным контентом!
👍1
#Coroutines

Coroutines & Patterns for work that shouldn’t be cancelled

Structured Concurrency в Kotlin Coroutines позволяет завершать асинхронные операции, когда их результат больше не нужен. Jetpack предоставляет стандартные CoroutineScope: viewModelScope и lifecycleScope.

Но порой есть операции, которые должны выполняться и за рамками CoroutineScope в котором была запущена Coroutine.

В статье разбирается:
👉 Coroutines или WorkManager?
👉 Лучшие практики Coroutine
👉 Выполнение операций, которые не должны быть отменены в ходе выполнения Coroutine. CoroutineScope из вашего Application класса
👉 Тестирование Coroutine
👉 Альтернативы: GlobalScope, ProcessLifecycleOwner scope, NonCancellable
#Podcast

Android Broadcast Podcast #11 "Развитие мобильного разработчика"

Что делать когда вы проработали много лет в мобильной разработке и думаете: "Куда вам расти дальше"? В гостях подкаста 3 опытнейших и известных разработчика из Facebook, Авито и JetBrains Kotlin Team.

Ведущий - Кирилл Розов
Гости:
👨‍✈️Константин Цховребов, JetBrains, разработчик в Kotlin Mobile Multiplatform
👨‍✈️ Даниил Попов, Авито, Инженер инфраструктуры Андроид проектов
👨‍✈️ Сергей Рябов, Facebook, Software Engineer в команде Native UI Frameworks, разработчик библиотеки Lytho

Спасибо Александру Марцинкевичу за помощь в подготовке выпуска

Отдельное спасибо Даниилу Попову за 🎵трек 🎵для подкаста. Хотите себе что интересное - пишите ему в личку
#WorkManager

Customizing WorkManager — Fundamentals

Продолжение серии статей о WorkManager, в которой разбирается как изменить настройки работы:
👉 Когда может понадобиться конфигурировать WorkManager самостоятельно
👉 Как предоставить собственную конфигурацию
👉 WorkerFactory: что такое и как добавить поддержку нестандартных конструкторов для подклассов ListenableWorker
👉 DelegatingWorkerFactory - оборачиваем несколько WorkerFactory через стандартную фабрику, вместо конфигурирования WorkManager для использования собственной фабрики
#GooglePlay #Huawei

Массовые удаления ваших приложений с устройств

На днях вы могли заметить заметное количество удалений ваших приложений в Google Play. Это связано с тем, что Huawei поменяла имена устройств и аналитика магазина приложений, посчитала это как удаление приложения и установку на новый.

Бейте тревогу если количество установок у вас не выросло соизмеримо с количеством удалений
#Optimization

App size reduction at Microsoft SwiftKey

История того как в Microsoft оптимизировали размер SwiftKey на Android.

В статье разбирают:
👉 Зачем оптимизировать размер APK
👉 Оптимизация кода
👉 Оптимизация ресурсов
👉 Оптимизация нативного кода
Также в статье выше Microsoft рассказали о интеграции в Azure DevOps Task и Github Actions шага по анализу размеру APK.

Инструмент позволяет анализировать 2 APK и сравнить их разные метрики:
👉 размер APK (apkSize)
👉 размер после установки (installSize)
👉 размер dex файлов (dexFiles)
👉 размер файлов ресурсов (arscFile)
👉 размер нативного кода (nativeLibs)
#Sample #Arhitecture

Marvel Heroes - пример приложения на основе MVVM

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

Тех стек приложения:
👉 min SDK = 21
👉 Kotlin based + Coroutines for asynchronous.
👉 Architecture Components: LiveData, Lifecycle, ViewModel, Room.
👉 MVVM Architecture (View - DataBinding - ViewModel - Model)
👉 Koin
👉 Retrofit2 & Gson
👉 OkHttp3
👉 Glide
👉 TransformationLayout
👉 WhatIf
👉 DiscreteScrollView
👉 Timber
👉 Material Components
Какой основной формат для обмена данными вы используете в своем последнем приложении?
Anonymous Poll
83%
REST
3%
GraphQL
0%
SOAP
4%
Socket
3%
Другой
3%
Нет работы с сервером
5%
Не участвую в опросе
Какой формат для сериализации данных для коммуникации с сервером вы используете?
Anonymous Poll
89%
JSON (GraphQL сюда)
6%
Protobuf
5%
XML
2%
Другой бинарный
1%
Другой
6%
Не участвую в опросе
#AndroidStudio #SQLite

Android Studio 4.1: Database Inspector

Не успела релизнуться Android Studio 4.0, но в новых канарейках Android Studio 4.1 нас радуют крутым функционалом. Теперь посмотреть данные из БД SQLite, модифицировать ее и делать запросы.

Все этого интегрировано с Room. Если AS будет находить аннотации, то позволит сразу выполнять запросы 🔥
#AndroidOS

A cautionary tale on Android: do not call System.exit()

Со времен Java многие разработчики привыкли к тому, что System.exit() остановит выполнение программы, но не в случае Android. Хотите завершить весь stack Activity - вызывайте Activity.finishAffinity().

Это не остановит все компоненты (Service и прочее), но поможет закрыть весь текущий back stack Activity.
#Online #Meetup

Kotlin Quiz by Mobile People

Сообщество Mobile People проводит онлайн митап по Kotlin в формате Quiz: задается вопрос, вы на него отвечаете, и идет объяснение ответа. Помимо всего вы можете выиграть призы!

Когда: 15 апреля, среда, 18.30 (Минск)
Где: YouTube Stream
#Arhitecture #Navigation

Context free Android navigation

Организация навигации в Android приложении имеет особенности - нам необходимо Activity, Contex либо Fragment (добавленный в Activity). Держать ссылки на эти компоненты из ViewModel не стоит. Как тогда организовать правильно навигацию не перекидывая события о переходе в подписчиков LiveData из ViewModel?

В статье рассматривается подход в виде абстракции Navigator, которую вы можете использовать в ViewModel.
#Architecture

Android: Error handling in Clean Architecture

Взгляд на обработку ошибок и передачу их между слоями в Clean Architecture. Учтите, что взгляд который описывается в статье - это не канон. Вам он может не понравиться, вы можете сделать по другому.

Для себя я предпочитаю возвращать всегда класс-обертку Result, которая может быть либо ошибкой, либо результатом успешно выполненной операции. Вот здесь пример