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

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

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

System App In Android

Все приложения делятся на 2 категории: системные и сторонние. Большинству разработчиков приходится сталкиваться со второй категорией приложений и распространять их через магазины приложений.

Но что могут делать системные приложения? Почему нам не дают их заменить? Почему разработчики стороннего лаунчера или звонилки не могут получить все возможности предустановленного приложения?

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

A Guide on Splash Screen in Android in 2020

Экран-заставка (Splash Screen) довольно часто явление в мобильных приложениях. Цели его разные:
👉 Красивое интро в приложение
👉 Начальная Activity приложения определяется динамически
👉 Быстры рендеринг просто экрана, пока идет инициализация приложения (холодный старт)
👉 Комбинация описанных выше пунктов 😁

В статье рассматриваются рекомендации по созданию Splash Screen:
👉 Использование android:windowBackground для задания фона экрана
👉 Как правильно отсчитывать время до закрытия Splash Screen: Handler / Timer / Coroutines
Есть ли Splash Screen в ваших приложениях?
Anonymous Poll
84%
Да
16%
Нет
#Новости

Вот и наступил новый год. Для меня 2019-й год прошёл очень бодро и с множеством событий как в работе, так и моей активности за её рамками. Одно из самых неожиданных стало для меня, что канал «Android Broadcast» прижился и я слышу положительные отзывы, а также идеи того, что сделать лучше от вас (статистику можно посмотреть выше 📈 ⬆️)

Я желаю вам в новом году активного роста высших навыков 💪, покорения новых вершин 🔝, и всего самого наилучшего вам и вашим семьям.

С большим уважением, автор канала Кирилл Розов
#OkHttp #Networking

Вышел OkHttp 4.3.0

Пока вчера все готовились к празднованию нового года ребята из OkHttp решили сделать новый релиз. Список изменений небольшой и имеет только одну новое важное изменение:
👉 Более агрессивное переиспользование потоков между OkHttp's HTTP/2 соединениями, connection pool, web socket-ами, и кэшем
👉 Обновление до Kotlin 1.3.61
👉 Исправление багов
#MemoryLeak #LeakCanary

Вышел LeakCanary 2.1.0

Популярная утилита для поиска утечек памяти развивается дальше. После недавне представленной версии 2.0 уже выходит следующее минорное обновление, в которое попали новые функции:
👉 Gradle плагин для обфусцированных приложений. Раньше была проблема, что при тестировании обфусцированной сборки приложения (с R8 или ProGuard) все стектрейсы было бесполезно смотреть с устройства так, как все названия классов/методов были изменены. Встречайте LeakCanary gradle плагин для обфусцированных приложений, которые решает это
👉 Множество улучшений в UI приложения для просмотра утечек памяти на устройства
👉 Улучшение документации
👉 Улучшение в API Leak и LeakTrace
👉 Автоматическое отключение LeakCanary, если в classpath найден заданный класс. По умолчанию этим классом является org.junit.Test
👉 Возможность изменения способа с помощью которого LeakCanary ищет утечки памяти в heap dump
👉 Интерактивный режим работы CLI
#LeakCanary #Reporting #Bugsnag

LeakCanary: Uploading to Bugsnag

Авторы LeakCanary рассказали о том, как они отслеживают утечки памяти в проде и уже не пропускают ни одной из таких проблем 3 года. Делают это они с помощью выгрузки leak trace на Bugsnag. Как это реализовать вы можете найти по ссылке.

Пример как будет выглядеть отчёт в Bug Snag можно найти в посту ниже ⬇️⬇️⬇️
Пример как выглядет 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 год