ch
Feedback
Android Dev Hub

Android Dev Hub

前往频道在 Telegram

Разработка под Android: Kotlin, Java.

显示更多
1 138
订阅者
无数据24 小时
-2417
-1 51830
帖子存档
Оптимизация Jetpack Compose и derivedStateOf Почему твой derivedStateOf не работает так, как ты думаешь? 🧐 Часто вижу на код-ревью такую конструкцию:

val listState = rememberLazyListState()
val showButton by remember {
    derivedStateOf { listState.firstVisibleItemIndex > 0 }
}
Вроде всё ок? Мы экономим рекомпозиции. Но есть нюанс, о котором забывают мидлы. Если внутри блока derivedStateOf вы обращаетесь к объекту, который не является State-объектом (или Snapshot-aware), магии не произойдет. Compose просто не узнает, что данные изменились, пока не случится рекомпозиция родителя по другой причине. 💡 Кейс из практики: Мы пытались трекать изменение обычного var поля внутри класса, который не был обернут в Stable. В итоге кнопка "Наверх" появлялась рандомно. Правило большого пальца: Используйте derivedStateOf только когда вы хотите превратить часто меняющийся State (например, скролл пиксель-в-пиксель) в редко меняющийся State (булеан видимости). Если вы просто мапите State A в State B - derivedStateOf часто избыточен и добавляет оверхед на трекинг зависимостей. #compose #performance #under_the_hood 👉@androidspb

Пишем простенький DI для Android приложения Сейчас практически любой проект имеет в своём составе как минимум одну библиотеку
Пишем простенький DI для Android приложения Сейчас практически любой проект имеет в своём составе как минимум одну библиотеку или решение для разруливания зависимостей, но далеко не каждый разработчик действительно понимает как устроены эти самые решения. Поэтому в этой статье я хотел бы прояснить некоторые базовые моменты, на которых построены такие известные библиотеки как Dagger, Hilt и Koin, а также показать на практическом примере как можно написать свое DI решение. https://habr.com/ru/articles/843258/ 👉@androidspb

Основы AGSL для android разработчика В последние годы интерфейсы приложений становятся все более интерактивными. Простого эфф
Основы AGSL для android разработчика В последние годы интерфейсы приложений становятся все более интерактивными. Простого эффекта нажатия на кнопку уже недостаточно - пользователи ждут живых анимаций и визуальной глубины. Но создание таких эффектов традиционно требовало от разработчиков значительных усилий. Представь: тебе нужно «поколдовать» над пикселями прямо в UI - добавить живой градиент, искажение картинки под пальцем, стеклянный блеск карточке и тому подобные эффекты. Раньше для этого приходилось прибегать к «тяжеловесам» таким как OpenGL/Vulkan, либо мучить CPU постобработкой битмапов. AGSL (Android Graphics Shading Language) решает это элегантнее: это язык фрагментных шейдеров, встроенный в сам графический стек Android, так что эффекты применяются прямо на уровне отрисовки интерфейса. https://habr.com/ru/articles/971992/ 👉@androidspb

LazyTimetable - высокопроизводительная таблица для расписания с отложенной загрузкой для Jetpack Compose для Android. Идеально подходит для создания расписаний фестивалей, конференций и любых многоколоночных макетов с временными рамками. Фичи: - Высокая производительность: ленивая загрузка с ограничением для области просмотра для плавной прокрутки даже при больших наборах данны - Позиционирование по времени: элементы позиционируются на основе длительности в секундах с автоматическим расчётом макета - Двунаправленная прокрутка: плавная горизонтальная и вертикальная прокрутка - Широкие возможности настройки: настройка цветов, интервалов и внешнего вида контента - Типобезопасный DSL: чистый, декларативный API для определения структуры расписания https://github.com/MoyuruAizawa/LazyTimetable 👉@androidspb

Вложенная прокрутка в Jetpack Compose Вложенная прокрутка в Jetpack Compose позволяет согласовывать движение между родительскими и дочерними компонентами, передавая неиспользованные значения прокрутки по иерархии. По умолчанию API scrollable и Lazy в Compose автоматически обрабатывают вложенную прокрутку, передавая оставшееся движение родительским элементам, когда дочерний достигает предела. Для реализации пользовательских сценариев — таких как сворачивающиеся панели инструментов или синхронизированные панели — Compose предоставляет NestedScrollConnection и NestedScrollDispatcher, которые позволяют перехватывать и отправлять события прокрутки до и после их обработки дочерним элементом. https://victorbrandalise.com/nested-scrolling-in-jetpack-compose/ 👉@androidspb

Как в Duolingo повысили производительность Android-приложения Наша миссия в Duolingo — создать лучшее образование в мире и сд
Как в Duolingo повысили производительность Android-приложения Наша миссия в Duolingo — создать лучшее образование в мире и сделать его доступным каждому. Однако наши метрики показали, что миллионы учащихся, особенно использующие недорогие устройства на развивающихся рынках, перестают пользоваться приложением из-за раздражающего времени загрузки: в начале 2024 года целых 39% пользователей на бюджетных Android-устройствах ждали запуска приложения более 5 секунд. Это напрямую подрывало нашу миссию универсальной доступности. Чтобы решить эту проблему, мы собрали отдельную команду, которая занялась оптимизацией производительности нашего Android-приложения. https://blog.duolingo.com/android-app-performance/ 👉@androidspb

Basic Guide to Animation in Jetpack Compose Animations in Jetpack Compose bring life to your UI, making interactions feel nat
Basic Guide to Animation in Jetpack Compose Animations in Jetpack Compose bring life to your UI, making interactions feel natural and engaging. Whether it’s fading elements in/out, moving objects, scaling components, or applying physics-based motion, Jetpack Compose provides powerful tools to achieve smooth animations effortlessly. This guide covers everything you need to know about the basics of animations in Jetpack Compose. https://nameisjayant.medium.com/basic-guide-to-animation-in-jetpack-compose-acd11659fdf1 👉@androidspb

Kotlin 2.2 - Запись лайвстрим с командой Language Evolution Team С выходом Kotlin 2.2 команда JetBrains продолжает развивать язык, делая его ещё мощнее и удобнее. В этом эфире разобрали новые возможности Kotlin 2.2. Стабильные функции: break и continue вне локального контекста, guard-выражения и множественная интерполяция с несколькими $ теперь стали частью стабильного языка. Контекстные параметры позволяют лучше управлять зависимостями и сервисами, уменьшая шаблонный код. Вложенные typealias делают язык более единообразным — больше не нужно объявлять псевдонимы типов только на верхнем уровне. Аннотации у свойств теперь имеют более разумные значения по умолчанию, а новый таргет all позволяет распространять аннотацию сразу на getter, setter и поле хранения. Inline value-классы ранее были фичей, понятной только Kotlin, но теперь появился способ генерировать их так, чтобы они были дружелюбны к Java. Контекстно-зависимое разрешение уменьшает количество необходимых квалификаторов, используя окружающую типовую информацию для поиска. Неважно, вы опытный разработчик на Kotlin или только начинаете — это отличный шанс познакомиться с последними улучшениями языка. источник 👉@androidspb

Мок-собеседование. Андрей Сумин vs Руслан Хафизов 🔥 Собеседование проводит заслуженный в наших кругах автор андроид курсов - Андрей Сумин. За годы создания контента в виде обучающих материалов у Андрея явно есть что спросить. Будет интересно) источник 👉@androidspb

Android Interview Questions Всеобъемлющая подборка классифицированных вопросов для собеседования по Android, охватывающая ООП
Android Interview Questions Всеобъемлющая подборка классифицированных вопросов для собеседования по Android, охватывающая ООП, Kotlin, архитектуру, корутины, хранение данных, тестирование, безопасность и многое другое. https://github.com/DoggyDoggyDoggy/Android-Interview-Questions 👉@androidspb

Подборка книг по Java Основы Java: 1. "Head First Java" от Кэти Сьерра и Берт Бейтс Эта книга предлагает уникальный подход к обучению с использованием визуальных элементов и интерактивных упражнений. Она идеально подходит для тех, кто только начинает изучать Java и хочет получить прочные основы. Книга написана в легком и доступном стиле, что делает процесс обучения увлекательным и эффективным. 2. "Java: A Beginner's Guide" от Герберта Шилдта Герберт Шилдт — известный автор учебников по программированию, и его книга "Java: A Beginner's Guide" является отличным ресурсом для начинающих. В этой книге он подробно объясняет основные концепции Java, начиная с самых простых и заканчивая более сложными. Книга написана в доступном стиле и включает множество примеров кода. 3. "Effective Java" от Джошуа Блоха Хотя эта книга не предназначена исключительно для новичков, она является незаменимым ресурсом для тех, кто хочет писать качественный и эффективный код на Java. Джошуа Блох делится своими рекомендациями и лучшими практиками, которые помогут вам избежать распространенных ошибок и улучшить качество вашего кода. Продвинутый уровень: 1. "Java Concurrency in Practice" от Брайана Гетца и других авторов Эта книга является обязательной для тех, кто хочет углубиться в тему многопоточности и конкурентного программирования на Java. Она охватывает все аспекты, начиная от базовых концепций и заканчивая сложными паттернами. Книга написана командой экспертов, что делает её особенно ценной. 2. "Clean Code: A Handbook of Agile Software Craftsmanship" от Роберта Мартина Хотя эта книга не посвящена исключительно Java, она является важным ресурсом для любого программиста. Роберт Мартин делится своими принципами написания чистого и поддерживаемого кода. Книга написана в доступном стиле и включает множество примеров кода. 3. "Java Performance: The Definitive Guide" от Скотта Оукса Эта книга поможет вам понять, как оптимизировать производительность ваших Java-приложений. Скотт Оукс объясняет, как измерять и улучшать производительность кода. Книга написана в доступном стиле и включает множество примеров кода. 👉@androidspb

Хроника изменений API фоновой работы в Android Привет! Меня зовут Алексей, я работаю Android-разработчиком в Облаке Mail. Наш
Хроника изменений API фоновой работы в Android Привет! Меня зовут Алексей, я работаю Android-разработчиком в Облаке Mail. Наше приложение выполняет важную задачу — хранит воспоминания пользователей. Для этого необходимо уметь правильно работать с файлами в фоне, чтобы не только надёжно хранить те самые воспоминания, но и быстро их загружать, редактировать и делиться. В этой статье я расскажу о том, как мы пришли к нашим современным методам фоновой работы в Android. https://habr.com/ru/companies/vk/articles/916466/ 👉@androidspb