Size: a a a

Android Broadcast

2019 December 17
Android Broadcast
#Kotlin

Writing clean models using extensions

Extension function - прекрасная возможность Kotlin, которая позволяет не только избавиться от утилитарных статических функций, но и сделать архитектуру ваших приложений лучше. Например, можно сделать ваши data классами полностью чистыми от функций и перенести все в extension function. Подробнее об этом читайте в статье.
источник
2019 December 18
Android Broadcast
android_broadcast
Какой чип стоит в вашем смарфтоне?
Окончательные результаты
63%
Qualcomm Snapdragon
8%
Apple A
9%
Samsung Exynos
2%
Mediatek
13%
Не знаю
5%
Другой вариант
Проголосовало: 350
Результаты опроса наглядно подтверждают, что Qualcomm Snapdragon - доминирующее решение у Android разработчиков и большинство из них сидит на Android.
источник
Android Broadcast
#Room #Coroutines

Room 🔗 Flow

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

Обзор Kotlin Conf'19

4-6 декабря прошла конференция Kotlin Conf 2019 и мне выдалась возможность побывать на ней лично. Я с удовольствием делюсь своими впечатлениями и докладами на который стоит обратить внимание (по мнению Android разработчика)
источник
2019 December 19
Android Broadcast
#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
источник
2019 December 20
Android Broadcast
#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, естественно с задержками.
источник
Android Broadcast
#Kotlin #Multiplatform #Podcast

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

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

Гости (Android разработчики в компании IceRock):
Владислав Арешкин - http://tetraquark.ru/
Андрей Усиченко - https://www.instagram.com/ausichenko
Никита Прокопишин - https://twitter.com/nprokopishin

Подписывайтесь на новости для Android разработчиков - https://t.me/android_broadcast
Версия на SoundCloud - http://bit.ly/2sNcpzg

Полезные ссылки:
IceRock - http://icerockdev.com/
Материалы для старта в Kotlin Multiplatform от IceRock - https://kmp.icerock.dev
Kotlin Multiplatform Mobile - https://www.jetbrains.com/lp/mobilecrossplatform/
Документация по Kotlin Multiplatform - https://kotlinlang.org/docs/reference/multiplatform.html
Шаблон проекта для старта - https://github.com/icerockdev/moko…
источник
Android Broadcast
В компании какого типа работаете вы?
Окончательные результаты
32%
Аутсорс (для сторонних компания)
47%
Продуктовая (собственные публичные приложения)
3%
Фрилансер
1%
Работаю сам на себя
13%
Аутсорс + Продуктовая (2 профиля в одной компании)
3%
Другой
Проголосовало: 485
источник
2019 December 21
Android Broadcast
#JetpackCompose

Если вы следите за развитием Jetpack Compose, то вам стоит обратить внимание на официальный пример JetNews. В develop ветке репозитория обновляется все на основе последних изменений в snapshot версии Jetpack Compose.
источник
2019 December 23
Android Broadcast
#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)
источник
Android Broadcast
#Kotlin #Coroutines #Flow

Instant Search with Kotlin Coroutines

В продолжение темы работы с Coroutine Flow - в статье разбирается задача организации поиска «на лету» (по мере ввода) в UI для Android на основе Flow.
источник
Android Broadcast
#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
источник
Android Broadcast
Почему вы не используете Coroutine в своём проекте на работе?
Анонимный опрос
34%
Мне повезло - я использую Coroutine
4%
Все просто - не нравятся Coroutine
11%
Меня устраивает как было раньше
4%
Не даёт втянуть заказчик
19%
Из-за legacy кода ограничены в возможностях
5%
Сложность изучения
9%
Другой вариант
13%
Посмотреть результаты
Проголосовало: 535
источник
2019 December 24
Android Broadcast
#Kotlin #CodeQuality

Вышел Detekt 1.3.0

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

Selectively running Android modularized unit tests on your CI server

Рецепт как запускать тесты только в тех модулях, в которых произошли изменения в вашем ПР. Это позволит уменьшить количество применяемых тестов и быстрее проверять ПР.
источник
Android Broadcast
#News

Для всех кто слушает подкаст от Android Broadcast и любит Apple сервисы есть радостная новость - подкаст стал доступен в Apple Podcasts.

Для тех же кто пользуется Android подкаст можно найти в SoundCloud и Pocket Cast. Пишите в личку @krlrozov, если хотите увидеть подкаст и в других ваших любимых сервисах.
источник
Android Broadcast
#MotionLayout #Animation

MotionLayout: A new way to create animations on Android

Обещанного 3 года ждут? Мы ждали Motion Editor всего 2 😁. Уже в Android Studio 4.0 Motion Editor доступен всем! Теперь мы получили удобный визуальный редактор для анимаций и пора вспомнить, что было и как MotionLayout меняет игры в анимацию!
источник
2019 December 27
Android Broadcast
#Новости

Всем привет! Вот уже пошел третий день как на канале не появляются новости. Я не ленюсь и все также смотрю и читаю новости, пытаюсь найти что-то интересное, но видно все авторы ушли в новогодние 🎄и рождественские  🔔праздники, в связи с чем и контента пока будет меньше чем обычно.

Вы всегда можете поскролить вверх, посмотреть ранние статьи или нажать хэштег и найти всё по интересующей вас теме.
источник
2019 December 28
Android Broadcast
#BestPractices

The Seven (Actually 10) Cardinal Sins of Android Development

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

В статье разбираются ошибки, которые не стоит допускать в вашем коде. С чем-то из этого вы будете знакомы, а с чем-то нет:
👉 Статические ссылки на Android компоненты с жизненным циклом (Activity/Fragment/View и др.)
👉 Неправильно получение ссылки на Fragment
👉 Хранение Fragment в FragmentPagerAdapter (ViewPager)
👉 Аргументы в конструкторе Fragment
👉 Задание переменных Fragment с использованием set функций при создании
👉 Не сохранять состояние через в Bundle при использование ViewModel
👉 Загружать данные только при savedInstanceState == null
👉 Инициализация Fragment в некорректном состоянии
👉 Переопределение onResume()/onPause() для всего подряд
👉 Не final static переменные
источник
2019 December 30
Android Broadcast
#LiveData #Kotlin #Nullability

Improving LiveData nullability in Kotlin

Не раздражало ли вас, что при объявлении LiveData<Value> в Kotlin, вы все равно можете получить null в Observer или задать null значение через LiveData.value?

Проблема заключается в том, что LiveData написана на Java и ничего не знает о системе типов в Kotlin и особенностях Generic. Исправить это через -ktx библиотеки не получится, так как надо переписывать LiveData на Kotlin или иметь спец аннотации для Java, чтобы обеспечивать совместимость.

В статье автор описывает не самое красивое решение, но эффективное - создание подкласса MutableLiveData с полной поддержкой Kotlin.
источник