#AndroidOS
System App In Android
Все приложения делятся на 2 категории: системные и сторонние. Большинству разработчиков приходится сталкиваться со второй категорией приложений и распространять их через магазины приложений.
Но что могут делать системные приложения? Почему нам не дают их заменить? Почему разработчики стороннего лаунчера или звонилки не могут получить все возможности предустановленного приложения?
В статье разбираются особенности системных приложений и их возможности, которые не даны простым сторонним приложениям.
System App In Android
Все приложения делятся на 2 категории: системные и сторонние. Большинству разработчиков приходится сталкиваться со второй категорией приложений и распространять их через магазины приложений.
Но что могут делать системные приложения? Почему нам не дают их заменить? Почему разработчики стороннего лаунчера или звонилки не могут получить все возможности предустановленного приложения?
В статье разбираются особенности системных приложений и их возможности, которые не даны простым сторонним приложениям.
Medium
System App In Android
Android’s underlying kernel is based on Linux, but it has been customized to suit Google’s directions. There is no support for the GNU…
#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.