Хроника изменений API фоновой работы в Android
Привет! Меня зовут Алексей, я работаю Android-разработчиком в Облаке Mail. Наше приложение выполняет важную задачу — хранит воспоминания пользователей. Для этого необходимо уметь правильно работать с файлами в фоне, чтобы не только надёжно хранить те самые воспоминания, но и быстро их загружать, редактировать и делиться. В этой статье я расскажу о том, как мы пришли к нашим современным методам фоновой работы в Android.
https://habr.com/ru/companies/vk/articles/916466/
👉@androidspb
Привет! Меня зовут Алексей, я работаю Android-разработчиком в Облаке Mail. Наше приложение выполняет важную задачу — хранит воспоминания пользователей. Для этого необходимо уметь правильно работать с файлами в фоне, чтобы не только надёжно хранить те самые воспоминания, но и быстро их загружать, редактировать и делиться. В этой статье я расскажу о том, как мы пришли к нашим современным методам фоновой работы в Android.
https://habr.com/ru/companies/vk/articles/916466/
👉@androidspb
👍1
Подборка книг по 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
Основы 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
Android Interview Questions
Всеобъемлющая подборка классифицированных вопросов для собеседования по Android, охватывающая ООП, Kotlin, архитектуру, корутины, хранение данных, тестирование, безопасность и многое другое.
https://github.com/DoggyDoggyDoggy/Android-Interview-Questions
👉@androidspb
Всеобъемлющая подборка классифицированных вопросов для собеседования по Android, охватывающая ООП, Kotlin, архитектуру, корутины, хранение данных, тестирование, безопасность и многое другое.
https://github.com/DoggyDoggyDoggy/Android-Interview-Questions
👉@androidspb
Media is too big
VIEW IN TELEGRAM
Мок-собеседование. Андрей Сумин vs Руслан Хафизов
🔥 Собеседование проводит заслуженный в наших кругах автор андроид курсов - Андрей Сумин.
За годы создания контента в виде обучающих материалов у Андрея явно есть что спросить. Будет интересно)
источник
👉@androidspb
🔥 Собеседование проводит заслуженный в наших кругах автор андроид курсов - Андрей Сумин.
За годы создания контента в виде обучающих материалов у Андрея явно есть что спросить. Будет интересно)
источник
👉@androidspb
👍1
Media is too big
VIEW IN TELEGRAM
Kotlin 2.2 - Запись лайвстрим с командой Language Evolution Team
С выходом Kotlin 2.2 команда JetBrains продолжает развивать язык, делая его ещё мощнее и удобнее. В этом эфире разобрали новые возможности Kotlin 2.2.
Стабильные функции:
Контекстные параметры позволяют лучше управлять зависимостями и сервисами, уменьшая шаблонный код.
Вложенные typealias делают язык более единообразным — больше не нужно объявлять псевдонимы типов только на верхнем уровне.
Аннотации у свойств теперь имеют более разумные значения по умолчанию, а новый таргет
Inline value-классы ранее были фичей, понятной только Kotlin, но теперь появился способ генерировать их так, чтобы они были дружелюбны к Java.
Контекстно-зависимое разрешение уменьшает количество необходимых квалификаторов, используя окружающую типовую информацию для поиска.
Неважно, вы опытный разработчик на Kotlin или только начинаете — это отличный шанс познакомиться с последними улучшениями языка.
источник
👉@androidspb
С выходом Kotlin 2.2 команда JetBrains продолжает развивать язык, делая его ещё мощнее и удобнее. В этом эфире разобрали новые возможности Kotlin 2.2.
Стабильные функции:
break и continue вне локального контекста, guard-выражения и множественная интерполяция с несколькими $ теперь стали частью стабильного языка.Контекстные параметры позволяют лучше управлять зависимостями и сервисами, уменьшая шаблонный код.
Вложенные typealias делают язык более единообразным — больше не нужно объявлять псевдонимы типов только на верхнем уровне.
Аннотации у свойств теперь имеют более разумные значения по умолчанию, а новый таргет
all позволяет распространять аннотацию сразу на getter, setter и поле хранения.Inline value-классы ранее были фичей, понятной только Kotlin, но теперь появился способ генерировать их так, чтобы они были дружелюбны к Java.
Контекстно-зависимое разрешение уменьшает количество необходимых квалификаторов, используя окружающую типовую информацию для поиска.
Неважно, вы опытный разработчик на Kotlin или только начинаете — это отличный шанс познакомиться с последними улучшениями языка.
источник
👉@androidspb
👍1
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.iss.onedium.com/basic-guide-to-animation-in-jetpack-compose-acd11659fdf1
👉@androidspb
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.iss.onedium.com/basic-guide-to-animation-in-jetpack-compose-acd11659fdf1
👉@androidspb
👍1
Как в Duolingo повысили производительность Android-приложения
Наша миссия в Duolingo — создать лучшее образование в мире и сделать его доступным каждому. Однако наши метрики показали, что миллионы учащихся, особенно использующие недорогие устройства на развивающихся рынках, перестают пользоваться приложением из-за раздражающего времени загрузки: в начале 2024 года целых 39% пользователей на бюджетных Android-устройствах ждали запуска приложения более 5 секунд. Это напрямую подрывало нашу миссию универсальной доступности.
Чтобы решить эту проблему, мы собрали отдельную команду, которая занялась оптимизацией производительности нашего Android-приложения.
https://blog.duolingo.com/android-app-performance/
👉@androidspb
Наша миссия в Duolingo — создать лучшее образование в мире и сделать его доступным каждому. Однако наши метрики показали, что миллионы учащихся, особенно использующие недорогие устройства на развивающихся рынках, перестают пользоваться приложением из-за раздражающего времени загрузки: в начале 2024 года целых 39% пользователей на бюджетных Android-устройствах ждали запуска приложения более 5 секунд. Это напрямую подрывало нашу миссию универсальной доступности.
Чтобы решить эту проблему, мы собрали отдельную команду, которая занялась оптимизацией производительности нашего Android-приложения.
https://blog.duolingo.com/android-app-performance/
👉@androidspb
👍1
Вложенная прокрутка в Jetpack Compose
Вложенная прокрутка в Jetpack Compose позволяет согласовывать движение между родительскими и дочерними компонентами, передавая неиспользованные значения прокрутки по иерархии.
По умолчанию API
https://victorbrandalise.com/nested-scrolling-in-jetpack-compose/
👉@androidspb
Вложенная прокрутка в Jetpack Compose позволяет согласовывать движение между родительскими и дочерними компонентами, передавая неиспользованные значения прокрутки по иерархии.
По умолчанию API
scrollable и Lazy в Compose автоматически обрабатывают вложенную прокрутку, передавая оставшееся движение родительским элементам, когда дочерний достигает предела. Для реализации пользовательских сценариев — таких как сворачивающиеся панели инструментов или синхронизированные панели — Compose предоставляет NestedScrollConnection и NestedScrollDispatcher, которые позволяют перехватывать и отправлять события прокрутки до и после их обработки дочерним элементом.https://victorbrandalise.com/nested-scrolling-in-jetpack-compose/
👉@androidspb
👍2
LazyTimetable - высокопроизводительная таблица для расписания с отложенной загрузкой для Jetpack Compose для Android. Идеально подходит для создания расписаний фестивалей, конференций и любых многоколоночных макетов с временными рамками.
Фичи:
- Высокая производительность: ленивая загрузка с ограничением для области просмотра для плавной прокрутки даже при больших наборах данны
- Позиционирование по времени: элементы позиционируются на основе длительности в секундах с автоматическим расчётом макета
- Двунаправленная прокрутка: плавная горизонтальная и вертикальная прокрутка
- Широкие возможности настройки: настройка цветов, интервалов и внешнего вида контента
- Типобезопасный DSL: чистый, декларативный API для определения структуры расписания
https://github.com/MoyuruAizawa/LazyTimetable
👉@androidspb
Фичи:
- Высокая производительность: ленивая загрузка с ограничением для области просмотра для плавной прокрутки даже при больших наборах данны
- Позиционирование по времени: элементы позиционируются на основе длительности в секундах с автоматическим расчётом макета
- Двунаправленная прокрутка: плавная горизонтальная и вертикальная прокрутка
- Широкие возможности настройки: настройка цветов, интервалов и внешнего вида контента
- Типобезопасный DSL: чистый, декларативный API для определения структуры расписания
https://github.com/MoyuruAizawa/LazyTimetable
👉@androidspb
GitHub
GitHub - MoyuruAizawa/LazyTimetable: A high-performance, lazy-loading timetable composable for Android Jetpack Compose. Perfect…
A high-performance, lazy-loading timetable composable for Android Jetpack Compose. Perfect for creating festival schedules, conference schedules, and any time-based multi-column layouts. - MoyuruAi...
👍2
Основы AGSL для android разработчика
В последние годы интерфейсы приложений становятся все более интерактивными. Простого эффекта нажатия на кнопку уже недостаточно - пользователи ждут живых анимаций и визуальной глубины. Но создание таких эффектов традиционно требовало от разработчиков значительных усилий.
Представь: тебе нужно «поколдовать» над пикселями прямо в UI - добавить живой градиент, искажение картинки под пальцем, стеклянный блеск карточке и тому подобные эффекты. Раньше для этого приходилось прибегать к «тяжеловесам» таким как OpenGL/Vulkan, либо мучить CPU постобработкой битмапов. AGSL (Android Graphics Shading Language) решает это элегантнее: это язык фрагментных шейдеров, встроенный в сам графический стек Android, так что эффекты применяются прямо на уровне отрисовки интерфейса.
https://habr.com/ru/articles/971992/
👉@androidspb
В последние годы интерфейсы приложений становятся все более интерактивными. Простого эффекта нажатия на кнопку уже недостаточно - пользователи ждут живых анимаций и визуальной глубины. Но создание таких эффектов традиционно требовало от разработчиков значительных усилий.
Представь: тебе нужно «поколдовать» над пикселями прямо в UI - добавить живой градиент, искажение картинки под пальцем, стеклянный блеск карточке и тому подобные эффекты. Раньше для этого приходилось прибегать к «тяжеловесам» таким как OpenGL/Vulkan, либо мучить CPU постобработкой битмапов. AGSL (Android Graphics Shading Language) решает это элегантнее: это язык фрагментных шейдеров, встроенный в сам графический стек Android, так что эффекты применяются прямо на уровне отрисовки интерфейса.
https://habr.com/ru/articles/971992/
👉@androidspb
👍1
Пишем простенький DI для Android приложения
Сейчас практически любой проект имеет в своём составе как минимум одну библиотеку или решение для разруливания зависимостей, но далеко не каждый разработчик действительно понимает как устроены эти самые решения. Поэтому в этой статье я хотел бы прояснить некоторые базовые моменты, на которых построены такие известные библиотеки как Dagger, Hilt и Koin, а также показать на практическом примере как можно написать свое DI решение.
https://habr.com/ru/articles/843258/
👉@androidspb
Сейчас практически любой проект имеет в своём составе как минимум одну библиотеку или решение для разруливания зависимостей, но далеко не каждый разработчик действительно понимает как устроены эти самые решения. Поэтому в этой статье я хотел бы прояснить некоторые базовые моменты, на которых построены такие известные библиотеки как Dagger, Hilt и Koin, а также показать на практическом примере как можно написать свое DI решение.
https://habr.com/ru/articles/843258/
👉@androidspb
👍1