#Splash #Coroutines
A Guide on Splash Screen in Android in 2020
Экран-заставка (Splash Screen) довольно часто явление в мобильных приложениях. Цели его разные:
👉 Красивое интро в приложение
👉 Начальная Activity приложения определяется динамически
👉 Быстры рендеринг просто экрана, пока идет инициализация приложения (холодный старт)
👉 Комбинация описанных выше пунктов 😁
В статье рассматриваются рекомендации по созданию Splash Screen:
👉 Использование
👉 Как правильно отсчитывать время до закрытия Splash Screen: Handler / Timer / Coroutines
A Guide on Splash Screen in Android in 2020
Экран-заставка (Splash Screen) довольно часто явление в мобильных приложениях. Цели его разные:
👉 Красивое интро в приложение
👉 Начальная Activity приложения определяется динамически
👉 Быстры рендеринг просто экрана, пока идет инициализация приложения (холодный старт)
👉 Комбинация описанных выше пунктов 😁
В статье рассматриваются рекомендации по созданию Splash Screen:
👉 Использование
android:windowBackground
для задания фона экрана👉 Как правильно отсчитывать время до закрытия Splash Screen: Handler / Timer / Coroutines
Medium
🕐 Revisited — 📚 A Guide on Splash Screen in Android in 2020
👀 A fresh look on the splash screen in Android in Kotlin and Coroutines
#Новости
Вот и наступил новый год. Для меня 2019-й год прошёл очень бодро и с множеством событий как в работе, так и моей активности за её рамками. Одно из самых неожиданных стало для меня, что канал «Android Broadcast» прижился и я слышу положительные отзывы, а также идеи того, что сделать лучше от вас (статистику можно посмотреть выше 📈 ⬆️)
Я желаю вам в новом году активного роста высших навыков 💪, покорения новых вершин 🔝, и всего самого наилучшего вам и вашим семьям.
С большим уважением, автор канала Кирилл Розов
Вот и наступил новый год. Для меня 2019-й год прошёл очень бодро и с множеством событий как в работе, так и моей активности за её рамками. Одно из самых неожиданных стало для меня, что канал «Android Broadcast» прижился и я слышу положительные отзывы, а также идеи того, что сделать лучше от вас (статистику можно посмотреть выше 📈 ⬆️)
Я желаю вам в новом году активного роста высших навыков 💪, покорения новых вершин 🔝, и всего самого наилучшего вам и вашим семьям.
С большим уважением, автор канала Кирилл Розов
#OkHttp #Networking
Вышел OkHttp 4.3.0
Пока вчера все готовились к празднованию нового года ребята из OkHttp решили сделать новый релиз. Список изменений небольшой и имеет только одну новое важное изменение:
👉 Более агрессивное переиспользование потоков между OkHttp's HTTP/2 соединениями, connection pool, web socket-ами, и кэшем
👉 Обновление до Kotlin 1.3.61
👉 Исправление багов
Вышел 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
👉 Автоматическое отключение LeakCanary, если в classpath найден заданный класс. По умолчанию этим классом является
👉 Возможность изменения способа с помощью которого LeakCanary ищет утечки памяти в heap dump
👉 Интерактивный режим работы CLI
Вышел 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 можно найти в посту ниже ⬇️⬇️⬇️
LeakCanary: Uploading to Bugsnag
Авторы LeakCanary рассказали о том, как они отслеживают утечки памяти в проде и уже не пропускают ни одной из таких проблем 3 года. Делают это они с помощью выгрузки leak trace на Bugsnag. Как это реализовать вы можете найти по ссылке.
Пример как будет выглядеть отчёт в Bug Snag можно найти в посту ниже ⬇️⬇️⬇️
square.github.io
Code recipes - LeakCanary
A memory leak detection library for Android
#Activity #Architecture
ActivityLifecycleCallbacks — слепое пятно в публичном API
ActivityLifecycleCallbacks - это полезное API, которое позволит вам избавиться от супер класса для всех
👉 Изменять темы для всех
👉 Отловить
👉 Отслеживать запускаемый экраны для аналитики
👉 Улучшить inject зависимостей через Dagger Android
Если вам нужно отслеживать через callback жизненный цикл
ActivityLifecycleCallbacks — слепое пятно в публичном API
ActivityLifecycleCallbacks - это полезное API, которое позволит вам избавиться от супер класса для всех
Activity
, в котором вы выполняете общие действия, или элегантно решить архитектурную задачу или сделать много чего еще полезного, о чем автор рассказывает в статье:👉 Изменять темы для всех
Activity
👉 Отловить
onActivityResult()
👉 Отслеживать запускаемый экраны для аналитики
👉 Улучшить inject зависимостей через Dagger Android
Если вам нужно отслеживать через callback жизненный цикл
Fragment
, то вы можете использовать FragmentLifecycleCallbacks.Хабр
ActivityLifecycleCallbacks — слепое пятно в публичном API
С детства я люблю читать инструкции. Я вырос, но меня до сих пор удивляет то, как взрослые люди безалаберно относятся к инструкциям: многие из них считают, что...
#Coroutines #Channel
Kotlin Coroutines in Android — Channel
Разбор Channel для предоставления набора значений (горячего):
👉 Что такое
👉
👉
👉 Закрытие
👉
👉 Типы
Kotlin Coroutines in Android — Channel
Разбор Channel для предоставления набора значений (горячего):
👉 Что такое
Channel
и с чем он схож👉
offer()
vs send()
👉
poll()
vs receive()
👉 Закрытие
Channel
👉
close()
vs cancel()
👉 Типы
Channel
: Rendezvous, Buffered, Unlimited, ConflatedMedium
Kotlin Coroutines in Android — Channel
The simplest way to realize what’s Channel and how to use it.
#UI #Performance
ViewStub: On-demand inflate view or lazily inflate layout resource
Как часто в UI вам приходится добавлять View, которые показываются по условию? Один из самых распространённые случаев - это показ UI при ошибках, отсутсвие сети или данных.
Как решают такую задачу разработчики? Зачастую просто складируют весь UI в одном Layout XML и используют
В Android SDK уже давно есть решение этому - ViewStub, которое позволяет вызывать inflate Layout XML отложено.
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 отложено.
Medium
ViewStub: On-demand inflate view or lazily inflate layout resource
Sometimes while developing an application, we have encountered a situation like based on some logic, we have to render some new view in…
#Dagger #ViewModel #SavedState #AssistedInject
Connecting The Dots
Описать как сделать что-то на Dagger может быть долго и непонятно, поэтому отправлю вас сразу в статью в которой описывается руководство как реализовать связку
Почему это важно изучить?
Подробнее о сохранении состояния ViewModel ➡️ здесь
Connecting The Dots
Описать как сделать что-то на Dagger может быть долго и непонятно, поэтому отправлю вас сразу в статью в которой описывается руководство как реализовать связку
ViewModel
+ SavedStateHandle
+ Dagger 2
. Почему это важно изучить?
ViewModel
не сохраняет своё состояние при пересоздании процесса, а только при изменении конфигурации, поэтому нужно использовать SavedStateHandleПодробнее о сохранении состояния ViewModel ➡️ здесь
Medium
Connecting The Dots
How to setup Dagger with ViewModel and Saved State module
#Podcast #Ask #Coroutines #UnderTheHood
8 января я, Кирилл Розов, автор канала Android Broadcast и Ильмир Усманов, разработчик компилятора Kotlin в JetBrains запишем подкаст на тему того, как обеспечивается работа Coroutine на уровне компилятора:
👉 Как работают Сoroutine под капотом
👉 Оптимизация кода компилятором
👉 Нужно ли разработчику запариваться как вызывать suspend функции определенным образом для более оптимального байт кода
👉 Как эффективнее вызывать suspend функции
👉 Coroutines в JVM/Native/JS
👉 Какие оптимизации ждут Coroutine в новом JVM Backend
👉 Дебаг Coroutine
Свои вопросы, на которые вам интересно услышать ответы, вы можете задать в Twitter комментарием на пост или мне в личку
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 - принудительное включение темной темы
и много много других, о которы вы можете найти все подробности в статье
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 - принудительное включение темной темы
и много много других, о которы вы можете найти все подробности в статье
Medium
Developer Options in Android
Every Android developer begins their journey by enabling USB debugging from Developer options page but sometimes less curious ones miss…
#новости
Новости о подкастах и видео от Android Broadcast можно будет найти на сайте AppTractor
Подружился с проектом AppTractor, авторы которого ежедневно делятся множеством новостей, статей и библиотек из мира мобильной разработки: Android, iOS, Flutter, React Native, Xamarin, а также пишут на темы околомобильной разработки. Очень часто я нахожу интересные стать на их сайте и делюсь ими с вами.
Также AppTractor является домом для ребят из Android Dev Podcast (там можно найти их страничку).
Новости о подкастах и видео от 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.
What's new in IntelliJ IDEA
IntelliJ IDEA - любимая многими IDE, каждый год выходит по 3 мажорных релиза. В JetBrains сделали обзор улучшений и новых фичей, которые были добавлены в 2019.
JetBrains
What's New in IntelliJ IDEA
Explore IntelliJ IDEA's latest features and updates to elevate your professional Java and Kotlin development experience.