Safe delay in Android Views: goodbye Handlers, Hello Coroutines!
Уверен, все вы использовали
Для таких кейсов, есть элегантное решение – Kotlin + Coroutine + Lifecycle, для использования, достаточно подрубить несколько зависимостей и использовать экстеншн метод
Уверен, все вы использовали
Handler для выполнения операций с задержкой (postDelay) и наверняка сталкивались с проблемами/крешами, из-за чего приходилось городить дополнительные проверки – классика. А все потому, что Handler имеет один жирный минус – не имеет привязки к жизненному циклу Activity/Fragment/View.Для таких кейсов, есть элегантное решение – Kotlin + Coroutine + Lifecycle, для использования, достаточно подрубить несколько зависимостей и использовать экстеншн метод
View.delayOnLifecycle(...). В статье можно посмотреть, как все это дело подрубить.👍3
Что посмотреть на выходных? Подборка полезностей 👇
👉 Performance - MAD Skills. Плейлист MADSkills по производительности приложений.
👉 Android Custom View. Крутые видосы про создание кастомных вьюшек.
👉 Jetpack DataStore. Основы DataStore с примерами кода.
👉 Performance - MAD Skills. Плейлист MADSkills по производительности приложений.
👉 Android Custom View. Крутые видосы про создание кастомных вьюшек.
👉 Jetpack DataStore. Основы DataStore с примерами кода.
👍1
Android in-app purchases
Один из способов монетизации приложений – встроенные покупки/подписки внутри приложения. На хабре есть целая серия статей от крутых ребят, с подробным руководством по использованию.
Если хотите подрубить в свое приложение или просто разобраться в in-app purchase, закидывайте пост в закладки 😎
Часть 1: конфигурация и добавление в проект
Часть 2: инициализация и обработка покупок
Часть 3: получение активных покупок и смена подписки
Часть 4: коды ошибок от Billing Library и как не облажаться с тестированием
Один из способов монетизации приложений – встроенные покупки/подписки внутри приложения. На хабре есть целая серия статей от крутых ребят, с подробным руководством по использованию.
Если хотите подрубить в свое приложение или просто разобраться в in-app purchase, закидывайте пост в закладки 😎
Часть 1: конфигурация и добавление в проект
Часть 2: инициализация и обработка покупок
Часть 3: получение активных покупок и смена подписки
Часть 4: коды ошибок от Billing Library и как не облажаться с тестированием
Производительность и скорость: как в Duolingo внедрили MVVM на Android
Статья, о том, как в Duolingo удалось повысить производительность и скорость работы приложения за счет рефакторинга и внедрения MVVM, Android Jetpack, Dagger и Hilt.
👉 количество ANR снизилось на 41%
👉 увеличили frame rate на 28%
👉 на 40% увеличилась скорость прокрутки уроков
Статья, о том, как в Duolingo удалось повысить производительность и скорость работы приложения за счет рефакторинга и внедрения MVVM, Android Jetpack, Dagger и Hilt.
👉 количество ANR снизилось на 41%
👉 увеличили frame rate на 28%
👉 на 40% увеличилась скорость прокрутки уроков
Серия статей по работе с Gradle
Достаточно полезные статьи, в которых максимально подробно описаны базовые моменты, конфигурации, зависимости, сборки, таски, плагины и вот это вот всё.
👉 Готовьсь, цельсь, пли! Как не обжечься при сборке Gradle-приложения, и настолько ли всё серьезно?
👉 Gradle Plugin: Что, зачем и как?
👉 Дикая природа Gradle Task: руководство по выживанию
Достаточно полезные статьи, в которых максимально подробно описаны базовые моменты, конфигурации, зависимости, сборки, таски, плагины и вот это вот всё.
👉 Готовьсь, цельсь, пли! Как не обжечься при сборке Gradle-приложения, и настолько ли всё серьезно?
👉 Gradle Plugin: Что, зачем и как?
👉 Дикая природа Gradle Task: руководство по выживанию
Android in-app purchases: серверная валидация покупок
Вышла 5-я часть цикла статей по реализации Android in-app purchases. В статье рассказывают про то, что такое серверная валидация и зачем валидировать покупки.
Вышла 5-я часть цикла статей по реализации Android in-app purchases. В статье рассказывают про то, что такое серверная валидация и зачем валидировать покупки.
Что посмотреть на выходных? Подборка полезностей👇
👉 Mobile QA от создания ферм до тонкостей релиза
👉 Экспертное Android собеседование. Боиштян собеседует Розова
👉 Публичное собеседование по многопоточности в Android / Сергей Боиштян (Авито)
Из собесов я сделал несколько важных заметок, на которые стоит обратить внимание и хотя бы поверхностно знать. Подготовлю материалы и закину отдельным постом 🤟
👉 Mobile QA от создания ферм до тонкостей релиза
👉 Экспертное Android собеседование. Боиштян собеседует Розова
👉 Публичное собеседование по многопоточности в Android / Сергей Боиштян (Авито)
Из собесов я сделал несколько важных заметок, на которые стоит обратить внимание и хотя бы поверхностно знать. Подготовлю материалы и закину отдельным постом 🤟
👍1
Оптимизируем отображение 10 000 объектов на карте
Интересная статья, о том, как в приложении ЦИАН оптимизировали отображение большого количества объектов на карте.
Я бы конечно поспорил на счет приведенных аргументов не использовать кластеризацию, но да ладно 😉
Интересная статья, о том, как в приложении ЦИАН оптимизировали отображение большого количества объектов на карте.
Я бы конечно поспорил на счет приведенных аргументов не использовать кластеризацию, но да ладно 😉
👍1
Improving perceived load times of images using blurred thumbnails — with Glide and custom loaders
Существует такой подход (Progressive image loading), когда картинка загружается частями, нужно это для того, чтобы улучшить воспринимаемое время загрузки. В статье показан 1 из подходов через Glide, с помощью которого можно сделать такую загрузку.
Работает это так: вначале загружается размытая картинка (можно с более меньшими размерами) через
О загрузке картинок из сети, с вашего бэка. Будет вообще красиво, если на бэке будет использоваться Thumbor – сервис, который поддерживает всевозможные трансформации картинок от ресайзов до различных кропов, фильтров и т.д.
Существует такой подход (Progressive image loading), когда картинка загружается частями, нужно это для того, чтобы улучшить воспринимаемое время загрузки. В статье показан 1 из подходов через Glide, с помощью которого можно сделать такую загрузку.
Работает это так: вначале загружается размытая картинка (можно с более меньшими размерами) через
thumbnail, и параллельно грузится картинка нужного размера.
О загрузке картинок из сети, с вашего бэка. Будет вообще красиво, если на бэке будет использоваться Thumbor – сервис, который поддерживает всевозможные трансформации картинок от ресайзов до различных кропов, фильтров и т.д.
👍1
10 лучших советов по повышению скорости сборки Android-проектов
В статье собраны 10 советов, которые могут ускорить сборку вашего проекта. Обратите внимание на 8 пункт: Использование динамических версий в Gradle зависимостях.
Никогда так не делайте, можно напороться на отсутствие каких-то методов в новой версии или отличное поведение работы той или иной функции. Всегда управляйте версиями зависимостей самостоятельно – проверено 😉.
В статье собраны 10 советов, которые могут ускорить сборку вашего проекта. Обратите внимание на 8 пункт: Использование динамических версий в Gradle зависимостях.
compile 'com.android.support:appcompat-v7:+'
Никогда так не делайте, можно напороться на отсутствие каких-то методов в новой версии или отличное поведение работы той или иной функции. Всегда управляйте версиями зависимостей самостоятельно – проверено 😉.
👍1
Как Telegram оптимизирует изображения перед отправкой на сервер
Еще одна интересная статья про работу с изображениями. Автор поковырял исходники телеграм и изложил алгоритм сжатия картинок в статье. Ну и выложил готовый класс хелпер на гитхаб, который можете заюзать у себя в проекте 😉
Кстати, если кто не знает – у телеги открытый код, посмотреть на его чудо архитектуру можно тут.
Еще одна интересная статья про работу с изображениями. Автор поковырял исходники телеграм и изложил алгоритм сжатия картинок в статье. Ну и выложил готовый класс хелпер на гитхаб, который можете заюзать у себя в проекте 😉
Кстати, если кто не знает – у телеги открытый код, посмотреть на его чудо архитектуру можно тут.
👍4
8 распространенных ошибок при разработке Android-приложений
В статье собраны распространенные ошибки при разработке Android-приложений.
Если коротко: юзайте библиотеки Jetpack, Kotlin, корутины, следите за структурой проекта (строки, цвета), используйте фрагменты и все возможности
Обратите внимание на 7 пункт о возможностях Android Studio – shortcuts и live template реально позволяют ускорить разработку, если по каким-то причинам до сих пор не юзали – обязательно попробуйте.
В статье собраны распространенные ошибки при разработке Android-приложений.
Если коротко: юзайте библиотеки Jetpack, Kotlin, корутины, следите за структурой проекта (строки, цвета), используйте фрагменты и все возможности
ConstraintLayout.Обратите внимание на 7 пункт о возможностях Android Studio – shortcuts и live template реально позволяют ускорить разработку, если по каким-то причинам до сих пор не юзали – обязательно попробуйте.
👍1
Change Retrofit Base URL on Runtime
В каждой нормальной компании, для разработки есть каким минимум 2 среды окружения DEV, PROD, а при хорошем раскладе может быть и больше (DEV, STAGE, BETA, PROD), но не суть. И когда таковых несколько, как то нужно переключаться.
Вариантов может быть несколько:
👉 Прописать урлы в конфиге гредла. Допустимый вариант, но каждое переключение будет требовать пересборки, что затратно по времени.
👉 Переключение в рантайме. То, что нам нужно, супер, мега удобная штука, за которую вы получите отдельный респект от тестировщиков 😎
Вот вам статейка, в которой описан 1 из подходов, с помощью которого можно реализовать смену урлов в рантайме.
В каждой нормальной компании, для разработки есть каким минимум 2 среды окружения DEV, PROD, а при хорошем раскладе может быть и больше (DEV, STAGE, BETA, PROD), но не суть. И когда таковых несколько, как то нужно переключаться.
Вариантов может быть несколько:
👉 Прописать урлы в конфиге гредла. Допустимый вариант, но каждое переключение будет требовать пересборки, что затратно по времени.
👉 Переключение в рантайме. То, что нам нужно, супер, мега удобная штука, за которую вы получите отдельный респект от тестировщиков 😎
Вот вам статейка, в которой описан 1 из подходов, с помощью которого можно реализовать смену урлов в рантайме.
👍1
SOLID Principles: The Kotlin Way
Архитектура архитектурой, а принципы SOLID никто не отменял 😉. В статье найдете примеры по каждому принципу на Kotlin.
Архитектура архитектурой, а принципы SOLID никто не отменял 😉. В статье найдете примеры по каждому принципу на Kotlin.
👍3👎1
Что посмотреть на выходных? Подборка полезностей 👇
👉 Android - Что такое Context
👉 Hilt extensions - MAD Skills
👉 Understanding Gradle
👉 Android Jetpack Compose Q&A
👉 Детектим и автоматизируем рутинные задачи в Android / Сергей Боиштян (Авито)
👉 Android - Что такое Context
👉 Hilt extensions - MAD Skills
👉 Understanding Gradle
👉 Android Jetpack Compose Q&A
👉 Детектим и автоматизируем рутинные задачи в Android / Сергей Боиштян (Авито)
👍1
Don’t abuse Kotlin’s scope functions
Небольшая статейка про то, когда и какие
Небольшая статейка про то, когда и какие
scope functions лучше использовать.👍1
Простой ZoomableImageView своими руками за 2 минуты
Пример реализации кастомной вьюшки для зума картинок через
Иногда реально бывает проще накидать что-то своё, чем искать и подключать стороннюю библиотеку.
Пример реализации кастомной вьюшки для зума картинок через
ScaleGestureDetector. Иногда реально бывает проще накидать что-то своё, чем искать и подключать стороннюю библиотеку.
👍1
Convert Android’s Gradle files from Groovy to Kotlin Step by Step
Пошаговая инструкция по конвертации
Зачем? А чтобы всё в проекте было на Kotlin, удобство, понятный синтаксис, все дела 😎
Пошаговая инструкция по конвертации
Gradle файлов в Kotlin.Зачем? А чтобы всё в проекте было на Kotlin, удобство, понятный синтаксис, все дела 😎
👍1
Что посмотреть на выходных? Подборка полезностей
👉 Idiomatic Kotlin – Result type (What it can do for you!)
👉 Рефакторинг Android-проекта / Евгений Мацюк
👉 Дзен-Мобайл: как ускорить рост приложений
👉 Idiomatic Kotlin – Result type (What it can do for you!)
👉 Рефакторинг Android-проекта / Евгений Мацюк
👉 Дзен-Мобайл: как ускорить рост приложений
👍1
RecyclerView с использованием котлиновских sealed классов
Подход, рассматриваемый в статье вполне себе можно применять, но только для списков, которые могут иметь немного типов, иначе получите лапшу из ифчиков, что не есть хорошо.
А вот тут и тут, можно посмотреть best practices по написанию ифчиков и как от них избавиться с помощью полиморфизма 😎
Подход, рассматриваемый в статье вполне себе можно применять, но только для списков, которые могут иметь немного типов, иначе получите лапшу из ифчиков, что не есть хорошо.
А вот тут и тут, можно посмотреть best practices по написанию ифчиков и как от них избавиться с помощью полиморфизма 😎
👍1