Avoid using Array in the data class constructor in Kotlin
В статье автор рассказывает про то, что использование массивов в Data-классах может быть небезопасным, т.к. реализация
Читать (En)
В статье автор рассказывает про то, что использование массивов в Data-классах может быть небезопасным, т.к. реализация
equals() и hashCode() сравнивает ссылки на объекты, а не содержимое. Читать (En)
👍15❤3🔥2
Kotlin Coroutines: The real difference between Job.cancel() and Scope.cancel()
Небольшая статья, с наглядными примерами отличий
👉 The basics: Job vs CoroutineScope
👉 Key differences in practice
👉 Real-world analogy
👉 When to use each
👉 Summary
Читать (En)
Небольшая статья, с наглядными примерами отличий
Job.cancel() и Scope.cancel() и в каких случаях, что использовать.👉 The basics: Job vs CoroutineScope
👉 Key differences in practice
👉 Real-world analogy
👉 When to use each
👉 Summary
Читать (En)
👍7❤3🔥3👎1
Edge-to-edge в Android: опыт внедрения и рекомендации по тестированию
Ребята из Авито рассказывают про свой опыт внедрения edge-to-edge в мобильное приложение Avito.
👉 Что такое edge-to-edge
👉 Причины поддержки edge-to-edge
👉 Feature-toggle для безопасного перехода
👉 Обработка WindowInsets на экранах
👉 Обработка цветов системных панелей
👉 Обработка клавиатуры
👉 OptOut-флаг
👉 Как выбрать девайсы для тестирования?
👉 На что стоит обратить внимание при тестировании
👉 Примеры из практики
👉 Заключение
Читать (Ru)
Ребята из Авито рассказывают про свой опыт внедрения edge-to-edge в мобильное приложение Avito.
👉 Что такое edge-to-edge
👉 Причины поддержки edge-to-edge
👉 Feature-toggle для безопасного перехода
👉 Обработка WindowInsets на экранах
👉 Обработка цветов системных панелей
👉 Обработка клавиатуры
👉 OptOut-флаг
👉 Как выбрать девайсы для тестирования?
👉 На что стоит обратить внимание при тестировании
👉 Примеры из практики
👉 Заключение
Читать (Ru)
👍8❤5🔥4
Stop Writing If-Else Trees: Use the State Pattern Instead
Полезная статья, в которой автор рассказывает как избавиться от ифчиков с помощью шаблона State, тем самым сделав свой код чище и логически понятней.
👉 How the State Pattern Works
👉 Why State Pattern Over Enums and Flags?
👉 Pros and Cons of the State Pattern
👉 Implementing the State Pattern in Dart (Phone Mode Example)
👉 Limitations and Trade-Offs
Читать (En)
Полезная статья, в которой автор рассказывает как избавиться от ифчиков с помощью шаблона State, тем самым сделав свой код чище и логически понятней.
👉 How the State Pattern Works
👉 Why State Pattern Over Enums and Flags?
👉 Pros and Cons of the State Pattern
👉 Implementing the State Pattern in Dart (Phone Mode Example)
👉 Limitations and Trade-Offs
Читать (En)
❤4👍4🔥3
Мечтают ли андроиды о Robolectric? Разбираем фреймворк по косточкам
Давненько на канале не было постов, решил немного отдохнуть и перезагрузиться. Чутка отдохнул, а вот перезагрузиться не получилось 😂. Поэтому, разбираю избранное и плавно возвращаюсь в публикациям.
Довольно подробная статья про Robolectric: что это такое, как устроен под капотом, как работает с Android‑компонентами без эмулятора, проблемы и т.д.
Читать (Ru)
Давненько на канале не было постов, решил немного отдохнуть и перезагрузиться. Чутка отдохнул, а вот перезагрузиться не получилось 😂. Поэтому, разбираю избранное и плавно возвращаюсь в публикациям.
Довольно подробная статья про Robolectric: что это такое, как устроен под капотом, как работает с Android‑компонентами без эмулятора, проблемы и т.д.
Читать (Ru)
👍6❤3🔥3👏1
16 things to know for Android developers at Google I/O 2025
Краткий обзор некоторых анонсов с Google I/O 2025.
🟢 Building intelligent apps with Generative AI
🟢 One app, every screen: think adaptive and unlock 500 million screens
🟢 Material 3 Expressive: design for intuition and emotion
🟢 Smarter widgets, engaging live updates
🟢 Enhanced Camera & Media: low light boost and battery savings
🟢 Build next-gen app experiences for Cars
🟢 Build for Android XR's expanding ecosystem with Developer Preview 2 of the SDK
🟢 Express yourself on Wear OS: meet Material Expressive on Wear OS 6
🟢 Engage users on Google TV with excellent TV apps
🟢 Build beautiful apps faster with Jetpack Compose
🟢 Kotlin Multiplatform: new Shared Template lets you build across platforms, easily
🟢 Gemini in Android Studio: AI Agents to help you work
🟢 Android Studio: smarter with Gemini
🟢 What’s new in Google Play
🟢 Start migrating to Play Games Services v2 today
🟢 And of course, Android 16
Плейлист📹 → Android at Google I/O 2025
Читать (En) | Смотреть (En)
Краткий обзор некоторых анонсов с Google I/O 2025.
Плейлист
Читать (En) | Смотреть (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍4❤3
Stale Data & Leaks were killing my Kotlin apps for 5 years. Here’s the fix.
Большая и полезная статья про то, как правильно инициировать загрузку и получение данных для отображения в UI, чтоб всё это работало ожидаемо и без утечек памяти.
Читать (En)
Большая и полезная статья про то, как правильно инициировать загрузку и получение данных для отображения в UI, чтоб всё это работало ожидаемо и без утечек памяти.
Читать (En)
👍9❤4🔥3👎1
Всем привет! С первого раза как-то не особо получилось вернуться к публикациям, поэтому пробую ещё раз 😎.
За 1,5 месяца отсутствия активности на канале, в избранном что-то да накопилось. Сейчас разбираю отложенные материалы, поэтому до середины/конца следующей недели вероятно слегка поспамлю, но это не точно😉
За 1,5 месяца отсутствия активности на канале, в избранном что-то да накопилось. Сейчас разбираю отложенные материалы, поэтому до середины/конца следующей недели вероятно слегка поспамлю, но это не точно
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👏3🔥2
Хроника изменений API фоновой работы в Android
Начнём пожалуй со свежого.
Довольно подробная статья про то, как менялись инструменты для фоновой работы в Android: Service, AlarmManager, Doze Mode, JobScheduler и т.д.
Читать (Ru)
Начнём пожалуй со свежого.
Довольно подробная статья про то, как менялись инструменты для фоновой работы в Android: Service, AlarmManager, Doze Mode, JobScheduler и т.д.
Читать (Ru)
👍6❤4🔥3
Серия статей/постов про паттерны: MVC, MVP, MVVM, MVI и вот это всё.
Статья 1: Введение в MV шаблоны
🟢 M‑V-подставь_свое
🟢 MVC (Controller)
🟢 MVP (Presenter)
🟢 Паттерн Команда (Command)
🟢 MVP (Moxy)
Статья 2: Подробнее про MVVM
🟢 Функции обратного вызова (Callback)
🟢 Паттерн Наблюдатель (Observer)
🟢 MVVM (ViewModel)
🟢 Привязка данных (Data Binding)
Статья 3: Из чего готовят MVI
🟢 Парадигма Реактивное программирование (Reactive programming)
🟢 Как завернуть все в шаурму Intent?
🟢 Как собрать урожай состояние?
🟢 Зачем трактору нужен редуктор?
🟢 Как открыть магазин с перехватчиками?
🟢 5 менеджеров и 1 работник
Статья 4: Готовим MVI
🟢 Собираем MVI‑пазл воедино
🟢 А что если вообще написать свою реализацию MVI?
🟢 Ты так и не понял, что такое Model?
Статья 1: Введение в MV шаблоны
Статья 2: Подробнее про MVVM
Статья 3: Из чего готовят MVI
Статья 4: Готовим MVI
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍5❤2
Эффекты в Jetpack Compose, лежащие на поверхности
Полезная статья про то, как реализовать универсальное решение, которое умеет накладывать различные эффекты(blur, magnifier) поверх готового контента в Jetpack Compose.
Читать (Ru)
Полезная статья про то, как реализовать универсальное решение, которое умеет накладывать различные эффекты(blur, magnifier) поверх готового контента в Jetpack Compose.
Читать (Ru)
👍10❤4🔥3👏1
Ныряем в холодные потоки Kotlin Flow
Базовая статья по основам Kotlin Flow для начинающих.
👉 Термины
👉 Холодные и горячие потоки
👉 Холодные потоки, горячие каналы
👉 Создание Flow
👉 Структура Flow
👉 Пример использования
Читать (Ru)
Базовая статья по основам Kotlin Flow для начинающих.
👉 Термины
👉 Холодные и горячие потоки
👉 Холодные потоки, горячие каналы
👉 Создание Flow
👉 Структура Flow
👉 Пример использования
Читать (Ru)
👍15❤6🤔4🔥2
The Kotlin Flow Operator Cheat Sheet
В догонку ещё один материал про Kotlin Flow – свежая шпаргалка по операторам, с примерами кода.
🟢
🟢
🟢
🟢
🟢
🟢
🟢
🟢
Читать (En)
В догонку ещё один материал про Kotlin Flow – свежая шпаргалка по операторам, с примерами кода.
map, filter, take(n)reduce, fold, runningReduce/scan, transformFlatMapConcat, FlatMapMerge, FlatMapLatestflowOn, buffer, conflate, collectLatestzip, combine, mergecatch, onCompletion, retryWhenonEach, debounce(timeoutMillis), distinctUntilChangedЧитать (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3🔥3
Flow Marbles: Interactive diagram of Kotlin Flow
И ещё дополнение к постам выше 😎
В соседнем чате поделились крутым ресурсом – Flow Marbles: интерактивные диаграммы Kotlin Flow.
Читать (En)
И ещё дополнение к постам выше 😎
В соседнем чате поделились крутым ресурсом – Flow Marbles: интерактивные диаграммы Kotlin Flow.
Читать (En)
🔥9👍3❤2👨💻1
Хочешь стать техлидом? Возможно, что не стоит
А вот полезная статья от Абакара, в которой он рассказывает о специфике позиции техлида, ключевых сложностях и подводных камнях.
👉 Точно ли тебе это нужно ?
👉 Техническая подкованность
👉 Отстаивание своей позиции
👉 Стратегическое мышление
👉 Фокусировка внимания
👉 Конфликты
👉 Борьба за ресурсы
👉 Стрессы
👉 Увольнения
👉 Ты — пример
Если целитесь на такую позицию – обязательно почитайте.
Читать (Ru)
А вот полезная статья от Абакара, в которой он рассказывает о специфике позиции техлида, ключевых сложностях и подводных камнях.
👉 Точно ли тебе это нужно ?
👉 Техническая подкованность
👉 Отстаивание своей позиции
👉 Стратегическое мышление
👉 Фокусировка внимания
👉 Конфликты
👉 Борьба за ресурсы
👉 Стрессы
👉 Увольнения
👉 Ты — пример
Если целитесь на такую позицию – обязательно почитайте.
Читать (Ru)
👍9🔥4❤3
Создание кастомного тултипа Jetpack Compose
Пошаговый гайд по созданию гибкой и удобной системы тултипов в Jetpack Compose, с помощью модифайеров и специального оборачивающего блока.
Читать (Ru)
Пошаговый гайд по созданию гибкой и удобной системы тултипов в Jetpack Compose, с помощью модифайеров и специального оборачивающего блока.
Читать (Ru)
👍11🔥7❤4
Развеиваем мифы о Stability в Compose: оптимизации Strong Skipping
Ещё про Compose. Интересная статья, в которой автор рассказывает, как лямбды и strong skipping режим влияют на работу компилятора и на рекомпозицию.
Выводы и рекомендации от автора
🟢 Compose стал более агрессивно оптимизировать пропуск Composable функций, когда параметры не изменились.
🟢 Акцент в отдладке Compose сдвигается от метрик и отчетов к отладке на основе LayoutInspector и других инструментов, потому что метрики и отчеты говорят слишком мало о реальной производительности компонентов.
🟢 Чтобы обновить UI, используя нестабильные аргументы, нужно создать новый инстанс такого аргумента в памяти, и метод copy дата-классов для этого отлично подходит.
🟢 При работе с коллекциями для оптимизации рекомпозиций больше не нужно использовать Immutable Collections, однако придется обновлять их с созданием нового инстанса. Альтернатива использовать - SnapshotStateList.
🟢 При работе с лямбдами для максимальной производительности нужно захватывать только те объекты, которые действительно нужны: если нужно только одно поле класса, лучше прочитать поле в отдельную переменную и сослаться на нее.
Код экспериментов из статьи → ComposeStability
Читать (Ru)
Ещё про Compose. Интересная статья, в которой автор рассказывает, как лямбды и strong skipping режим влияют на работу компилятора и на рекомпозицию.
Выводы и рекомендации от автора
Код экспериментов из статьи → ComposeStability
Читать (Ru)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤5👍3👌1
Типобезопасная передача результатов между экранами в Compose с Jetpack Navigation
Разработчик core-команды Wildberries рассказывает как они в проекте решили обеспечить типобезопасность при передаче результатов между экранами с применением библиотеки Compose Navigation.
В статье рассматривается механизм, который помогает избежать типичных ошибок и делает код более поддерживаемым.
Читать (Ru)
Разработчик core-команды Wildberries рассказывает как они в проекте решили обеспечить типобезопасность при передаче результатов между экранами с применением библиотеки Compose Navigation.
В статье рассматривается механизм, который помогает избежать типичных ошибок и делает код более поддерживаемым.
Читать (Ru)
👍4👎3❤2🔥1
Видим невидимое: контроль качества Android-библиотек через объектив AppTracer Lite SDK
Разработчик AppTracer Lite SDK(аналог Firebase Crashlytics) рассказывает про возможности инструмента и подводные камни, с которыми столкнулся при разработке.
Подход в статье универсален, может быть применим к любой библиотеке.
👉 Что такое AppTracer SDK
👉 Как трекать качество библиотеки
👉 Собираем краши
👉 Логируем аналитику
👉 Собираем метрики производительности
👉 Обфускация
👉 Crash-free интеграция Tracer
👉 Поддержка отключения Tracer в библиотеке
👉 Заключение
На данный момент AppTracer Lite SDK доступен только для внутреннего использования, но если вы хотите интегрировать его к себе – пишите в чат @tracer_feedback
Читать (Ru)
Разработчик AppTracer Lite SDK(аналог Firebase Crashlytics) рассказывает про возможности инструмента и подводные камни, с которыми столкнулся при разработке.
Подход в статье универсален, может быть применим к любой библиотеке.
👉 Что такое AppTracer SDK
👉 Как трекать качество библиотеки
👉 Собираем краши
👉 Логируем аналитику
👉 Собираем метрики производительности
👉 Обфускация
👉 Crash-free интеграция Tracer
👉 Поддержка отключения Tracer в библиотеке
👉 Заключение
На данный момент AppTracer Lite SDK доступен только для внутреннего использования, но если вы хотите интегрировать его к себе – пишите в чат @tracer_feedback
Читать (Ru)
🔥6❤4👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Creating an Engaging Progress Button in Jetpack Compose
Гайд по реализации вот такой кнопки с прогрессом на Jetpack Compose.
Исходный код → ProgressButton
Читать (En)
Гайд по реализации вот такой кнопки с прогрессом на Jetpack Compose.
Исходный код → ProgressButton
Читать (En)
👍12🔥5❤2