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

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

РКН https://abdev.by/rkn_tg_ab
Download Telegram
Пример как выглядет leak trace из LeakCanary в Bugsnag
#Activity #Architecture

ActivityLifecycleCallbacks — слепое пятно в публичном API

ActivityLifecycleCallbacks - это полезное API, которое позволит вам избавиться от супер класса для всех Activity, в котором вы выполняете общие действия, или элегантно решить архитектурную задачу или сделать много чего еще полезного, о чем автор рассказывает в статье:
👉 Изменять темы для всех Activity
👉 Отловить onActivityResult()
👉 Отслеживать запускаемый экраны для аналитики
👉 Улучшить inject зависимостей через Dagger Android

Если вам нужно отслеживать через callback жизненный цикл Fragment, то вы можете использовать FragmentLifecycleCallbacks.
#Coroutines #Channel

Kotlin Coroutines in Android — Channel

Разбор Channel для предоставления набора значений (горячего):
👉 Что такое Channel и с чем он схож
👉 offer() vs send()
👉 poll() vs receive()
👉 Закрытие Channel
👉 close() vs cancel()
👉 Типы Channel: Rendezvous, Buffered, Unlimited, Conflated
#Video #FFmpeg

Video Trimmer

Полезная библиотека, которая позволит вам вырезать кусов видео или вырезать кадры. Под капотом используется FFmpeg
1
#UI #Performance

ViewStub: On-demand inflate view or lazily inflate layout resource

Как часто в UI вам приходится добавлять View, которые показываются по условию? Один из самых распространённые случаев - это показ UI при ошибках, отсутсвие сети или данных.

Как решают такую задачу разработчики? Зачастую просто складируют весь UI в одном Layout XML и используют visibility=“gone|visible”. Но проблема в таком решение заключается, что все View у которых видимость gone и не отрисовываются на экране, но приложение тратит время на их парсинг, создание и добавление в иерархию, хотя по сути эти View могут даже не понадобиться вовсе.

В Android SDK уже давно есть решение этому - ViewStub, которое позволяет вызывать inflate Layout XML отложено.
#Dagger #ViewModel #SavedState #AssistedInject

Connecting The Dots

Описать как сделать что-то на Dagger может быть долго и непонятно, поэтому отправлю вас сразу в статью в которой описывается руководство как реализовать связку ViewModel + SavedStateHandle + Dagger 2.

Почему это важно изучить? ViewModel не сохраняет своё состояние при пересоздании процесса, а только при изменении конфигурации, поэтому нужно использовать SavedStateHandle

Подробнее о сохранении состояния ViewModel ➡️ здесь
#Podcast #Ask #Coroutines #UnderTheHood

8 января я, Кирилл Розов, автор канала Android Broadcast и Ильмир Усманов, разработчик компилятора Kotlin в JetBrains запишем подкаст на тему того, как обеспечивается работа Coroutine на уровне компилятора:
👉 Как работают Сoroutine под капотом
👉 Оптимизация кода компилятором
👉 Нужно ли разработчику запариваться как вызывать suspend функции определенным образом для более оптимального байт кода
👉 Как эффективнее вызывать suspend функции
👉 Coroutines в JVM/Native/JS
👉 Какие оптимизации ждут Coroutine в новом JVM Backend
👉 Дебаг Coroutine

Свои вопросы, на которые вам интересно услышать ответы, вы можете задать в Twitter комментарием на пост или мне в личку
#Debug

Developer Options in Android

Как можно оценить производительность вашего приложения? Стандартный способ - подключить кабелем телефон к вашему компьютеру и запустить Android Studio. Потом вы можете с помощью встроенных средств IDE выполнить проверки.

Но вышеописанный способ не является единственным. Можно воспользоваться инструментов из "Developer Options" прямо на устройстве. Там вы сможете найти:
👉 Layout Inspector - отрисовка границ View на экране
👉 Simulate Display Cutout - симуляция выреза в дисплее
👉 Изменение Minimum Width (dp)
👉 Don’t Keep Activities - уничтожение Activity когда они пропадают с экрана
👉 Profile GPU Rendering - проверка успевает ли ваш UI отрисоваться и не допустить просадки 60 FPS
👉 Strict Mode
👉 Animator duration scale/Transition animation scale - настройка воспроизведения анимации
👉 Night Mode - принудительное включение темной темы

и много много других, о которы вы можете найти все подробности в статье
#новости

Новости о подкастах и видео от Android Broadcast можно будет найти на сайте AppTractor

Подружился с проектом AppTractor, авторы которого ежедневно делятся множеством новостей, статей и библиотек из мира мобильной разработки: Android, iOS, Flutter, React Native, Xamarin, а также пишут на темы околомобильной разработки. Очень часто я нахожу интересные стать на их сайте и делюсь ими с вами.

Также AppTractor является домом для ребят из Android Dev Podcast (там можно найти их страничку).
#IDEA #Statistics

What's new in IntelliJ IDEA

IntelliJ IDEA - любимая многими IDE, каждый год выходит по 3 мажорных релиза. В JetBrains сделали обзор улучшений и новых фичей, которые были добавлены в 2019.
#IDEA #Performance

Графики улучшений производительности IntelliJ IDEA за 2019 год
#Firebase

Firebase App Distribution - Distributing test releases of your apps

После покупки Google-ом Fabric все части платформы стали интегрироваться или заменяться сервисами в Firebase.

Этого постигло и сервис Fabric Beta на замену которому пришёл Firebase App Distribution. С помощью этого сервиса вы можете распространять тестовые сборки вашего Android или iOS приложения. Есть Gradle Plug-in, поддержка Fastlane и CLI.

В статье вы найдёте интро по сервису и как настроить его интеграцию в Gradle

Внимание: Fabric будет отключена 31 марта 2020 года и миграция для всех пользователей этого сервиса обязательна
#UI

Edge-to-Edge - Android library for enabling edge-to-edge content and insetting views using simple Kotlin DSL

Android 10 стал активнее развивать идею «Edge-to-Edge», когда приложение занимает всю область экрана.

Одной из реализаций этого тренда стала поддержка навигации жестами и новые типы WindowInsets:
👉 MandatorySystemGestureInsets
👉 StableInsets
👉 SystemGestureInsets
👉 SystemWindowInsets
👉 TappableElementInsets

Однозначно стало все сложнее. Библиотека «Edge-to-Edge» призвана упростить работу с WindowInsets
Вы можете подробнее изучить тему Android Insets из Android 10, посмотрев доклад Константина Цховребова - «Android Insets — deal with fears and get ready for Android Q»
#UI #Audio

AudioRecordView

Библиотека для визуализации аудио во время записи
#Gradle

Decommissioning HTTP for Gradle Services

Начиная с 15 января 2020 Gradle сервисы станут доступны только по HTTPS. Если вдруг у вас что-то перестанет собираться - обратите внимание.

Что будет затронуто:
👉 Gradle Plugin Portal (plugins.gradle.org/m2)
👉 Gradle Distributions - сервис для загрузки Gradle Wrapper

Проверьте в своем проекте distributionUrl в файле gradle/wrapper/gradle-wrapper.properties
#Tests #Intro

Серия статей которая делает вступление в типы тестирования на Android и с помощью каких инструментов их можно осуществлять

Статьи:
1️⃣ Типы тестов, пирамида, основные библиотеки и инструменты
2️⃣ Non-instrumented (они же Unit) тесты, Robolectrics
3️⃣ Instrumented тесты: UIAutomator, Espresso
4️⃣ "End-to-End" и ручное тестирование: Appium, типы "End-to-End" тестов
У меня всегда была мечта сделать конференцию для Android разработчиков. Только по этой технологии и все что связано с ней. Но мир суров и на любую конференцию нужен бюджет и аудитория. Очень хочется узнать интересно было ли вам прийти на такую конференцию.

Давайте обсуждать в @android_broadcast_discussions