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

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

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

Data and file storage overview

Google представило руководство по различным хранилищам данных на устройстве: типы, как получить доступ, необходимые разрешения и пр. аспекты
#Kotlin #Native #KotlinNative #MemoryModel

Исследование модели памяти в Kotlin/Native

В JetBrains стартанули новое исследование, в этот раз – про то, насколько понятны различные аспекты работы с моделью памяти в Kotlin/Native. В опросе – 10 примеров кода, для каждого из которых нужно ответить на два вопроса – согласны ли вы с результатом выполнения кода и понимаете ли, почему он работает именно так. Мы ждем ответов и от опытных пользователей, и от новичков.
Ваше участие сильно поможет сделать Kotlin/Native и Kotlin MPP в понимании текущих проблем и поиске решений для них.
#CPU #Hardware

Новый флагманский чип Snapdragon 865 побил Apple A13

Apple всегда славилась производительностью своих чипов из серии A, которые вставляются в iPhone/iPad. Даже самые топовые чипы не могли побороться за вершину рейтинга, но с выходом Snapdragon 865 все изменилось и он смог уделать A13.

Сравнение проводилось на референсном устройстве. Посмотрим чего смогут добиться производители, встроив чип в свои флагманы (а это уже в феврале/марте).
Какой чип стоит в вашем смарфтоне?
Final Results
63%
Qualcomm Snapdragon
8%
Apple A
9%
Samsung Exynos
2%
Mediatek
13%
Не знаю
5%
Другой вариант
Android Broadcast
Какой чип стоит в вашем смарфтоне?
Вот только сейчас понял, что забыл упомянуть про Huawei Kirin. Приношу извинения владельцам этих устройств.
#DarkTheme #AppCompat #Context

Dark mode musings: beware of the context 🌗

Для графических ресурсов очень важно из какого Context бы берёте ресурсы, т.к. к Context привязана используемая тема для UI. К чему может привести проблема с использованием некорректного Context можно найти в статье на примере интеграции темной темы.
#Kotlin

Writing clean models using extensions

Extension function - прекрасная возможность Kotlin, которая позволяет не только избавиться от утилитарных статических функций, но и сделать архитектуру ваших приложений лучше. Например, можно сделать ваши data классами полностью чистыми от функций и перенести все в extension function. Подробнее об этом читайте в статье.
Android Broadcast
Какой чип стоит в вашем смарфтоне?
Результаты опроса наглядно подтверждают, что Qualcomm Snapdragon - доминирующее решение у Android разработчиков и большинство из них сидит на Android.
#Room #Coroutines

Room 🔗 Flow

Room с каждой версии все больше и больше включает в себя поддержку Kotlin Coroutine. В последней версии (2.2) появилась возможно использовать Flow. Как это работает вы можете найти в статье.
#Kotlin #Conference #Copengagen

Обзор Kotlin Conf'19

4-6 декабря прошла конференция Kotlin Conf 2019 и мне выдалась возможность побывать на ней лично. Я с удовольствием делюсь своими впечатлениями и докладами на который стоит обратить внимание (по мнению Android разработчика)
#Java #D8 #Desugarung #JakeWharton

D8 Library Desugaring

Все Android разработчики знакомы с фрагментированностью платформы, что не дает нам использовать последнии версии Android SDK в приложениях. Google помогла в решение этой проблемы, предоставля библиотеки AndroidX.

Есть одно "НО" - проблема не решена для Java API. Android разработчики стали чувствовать проблему меньше с приходом Kotlin, но все же в JDK есть интересные API:
👉 Java 8 Stream Collection (API 24)
👉 Java 8 Date Time (API 26)
👉 Optional (API 24)
👉 CompletableFuture (API 24)
Использовать в большинстве приложений не получится т.к. наиболее распространенные minSdk - это 21 или 23.

В Android Studio 4.0 (а точнее в Android Gradle Plugin и D8) была добавлена новая возможность “core library desugaring”, которая позволяет делать бэкпорт этих API, а также новых методов, появившиеся в других API (более подробный список здесь) и исправлять баги в Java API на старых версиях Android.

В своей статье Jake разбирается как устроена новая фича в D8
#IDEA

IntelliJ Platform Roadmap for 2020

Скорее всего любой Android разработчик пользуется Android Studio, а также Flutter разработчики. Базируется на Android Studio на основе InjelliJ IDEA от JetBrains. Авторы перед наступающим годом рассказали о свои планах по улучшению IDE в 2020:
👉 Скорость индексации проекта
👉 Улучшение в многопоточности
👉 Загрузка/выгрузка плагинов без перезагрузки
👉 Поддержка «парного программирования» (Collaborative Editing)
👉 Сборка и дебаг кода на удаленной машине (Cloud Execution)
👉 Редизайн модели проекта, которая позволит убрать текущие ограничения

Нас ждет очень много интересного и часть этих изменений будет попадать в Community Edition, что позволит нам получить их в Android Studio, естественно с задержками.
#Kotlin #Multiplatform #Podcast

Kotlin Multiplatform - выходим за рамки Kotlin/Android c IceRock

Поговорили c Android разработчиками из компании IceRock об их опыте разработке на Kotlin не только под Android, но и под iOS с использованием Kotlin Multiplatform: как прошел этот переход, пришлось ли изучать множество новых технологий, помогло ли им это развиваться и улучшило ли это скорость написания проектов и их качество.
#JetpackCompose

Если вы следите за развитием Jetpack Compose, то вам стоит обратить внимание на официальный пример JetNews. В develop ветке репозитория обновляется все на основе последних изменений в snapshot версии Jetpack Compose.
#Codelab #Coroutines #ArchitectureComponents

Advanced Coroutines with Kotlin Flow and LiveData
Продолжительность: 57 минут

В библиотеках ViewMode, Lifecycle и LiveData 2.2.0 было добавлена расширенная поддержка Kotlin Coroutines:
👉 Специальный билдер liveData {}, который внутри может выполнять suspend функции
👉 Конвертация Flow <-> LiveData
👉 Поддержка запуска Coroutine с Lifecycle и соответсвующие CoroutineScope в Fragment и Activity

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

Почему стоит обратить внимание на Flow?
1️⃣ Это полностью нативный для Kotlin способ для работы с реактивными потоками данных
2️⃣ Он проще чем RxJava. Написать свой оператор намного проще
3️⃣ Flow быстрее RxJava и других существующих реализации Rx на Java/Kotlin (тесты есть в репозитории kotlinx.coroutines)
#Kotlin #Coroutines #Flow

Instant Search with Kotlin Coroutines

В продолжение темы работы с Coroutine Flow - в статье разбирается задача организации поиска «на лету» (по мере ввода) в UI для Android на основе Flow.
#Coroutine

В последнее время я нахожу много материалов по Kotlin Coroutine. Думаю, что это связано с тем что Kotlin Coroutine активно пропагандируются командой Android для решения асинхронных задач и то что Flow - это способ решения задач для обработки потоков данных (замена RxJava). С одной стороны я понимаю, что пропаганда этого подхода - закономерный шаг при лозунге «Kotlin First» в Android. Но что там с альтернативами? На подходе RxJava 3, есть Reaktive - Rx на чистом Kotlin, возможно кто-то строит асинхронные запросы на основе стандартного API в Android SDK/JDK.

Не могу скрывать, что я и сам придерживаюсь подхода Kotlin Coroutine. Тяну ли я Coroutine в свои проекты - регулярно! Я люблю поделиться своим опытом или рассказать о результатах интересных исследований, поэтому выступаю с докладами, в рамках которых я имею возможность проводить краткие опросы. Результаты опроса «Используете ли вы Coroutine?» меня печалят - большая часть зала пользуется RxJava для асинхронных задач.

К чему я все это вёл - дайте свой фидбек почему так происходит и я постараюсь исправить ситуацию. Заказчика вашего переубедить я не смогу, но помочь с повышением уровня знаний - запросто.

Присоединяетесь к обсуждению в @android_broadcast_discussions
#Kotlin #CodeQuality

Вышел Detekt 1.3.0

Вышла новая версия утилиты для проверки качества Kotlin кода. В обновлении произошли следующие важные изменения:
👉 Новые правила: UnnecessaryAnnotationUseSiteTarget и MapGetWithNotNullAssertionOperator
👉 Минимальная поддерживаемая версия Gradle выросла до 5.0
👉 Исправление багов
👉 Улучшения в документации