Простая оптимизация LazyColumn в одну строчку кода
Если вы работаете со списками в Jetpack Compose, вы наверняка использовали LazyColumn. Это фантастический инструмент для эффективного отображения больших списков данных с минимальными затратами производительности. Но знаете ли вы, что существует простой трюк, который может значительно повысить производительность вашего LazyColumn?
В этой статье вы узнаете, почему использование key в LazyColumn является обязательным, как его использовать и какие преимущества это дает вашему приложению.
Статья: https://apptractor.ru/info/articles/prostaya-optimizatsiya-lazycolumn-v-odnu-strochku-koda.html
Платформа: Android
Если вы работаете со списками в Jetpack Compose, вы наверняка использовали LazyColumn. Это фантастический инструмент для эффективного отображения больших списков данных с минимальными затратами производительности. Но знаете ли вы, что существует простой трюк, который может значительно повысить производительность вашего LazyColumn?
В этой статье вы узнаете, почему использование key в LazyColumn является обязательным, как его использовать и какие преимущества это дает вашему приложению.
Статья: https://apptractor.ru/info/articles/prostaya-optimizatsiya-lazycolumn-v-odnu-strochku-koda.html
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
Sequence Showcase - создание последовательностей с подсветкой разных элементов на экране в определенном порядке. Полезно для онбординга или релиза новых фич.
Sequence Showcase на GitHub: https://github.com/jocoand/compose-showcase
Платформа: Android
⭐️: 13
Sequence Showcase на GitHub: https://github.com/jocoand/compose-showcase
Платформа: Android
⭐️: 13
Оптимизация под контролем: инструменты и метрики для Аndroid-приложений
Для пользователей важно, чтобы приложение открывалось быстро и работало отзывчиво. Чем быстрее оно загружается, плавнее работает, тем больше вероятность, что человек вернётся и продолжит им пользоваться. С другой стороны, постоянное добавление новой функциональности может негативно повлиять на скорость старта и отзывчивость приложения, что, вероятно, сподвигнет пользователя поискать более быстрый аналог.
Статья: https://habr.com/ru/companies/vk/articles/869904/
Платформа: Android
Для пользователей важно, чтобы приложение открывалось быстро и работало отзывчиво. Чем быстрее оно загружается, плавнее работает, тем больше вероятность, что человек вернётся и продолжит им пользоваться. С другой стороны, постоянное добавление новой функциональности может негативно повлиять на скорость старта и отзывчивость приложения, что, вероятно, сподвигнет пользователя поискать более быстрый аналог.
Статья: https://habr.com/ru/companies/vk/articles/869904/
Платформа: Android
Видео и подкасты за неделю на @AppFiles
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#ios #android #mobile #video
•
(iOS Ru) Мок-интервью по мобильному системному дизайну (все собеседования)•
(iOS Ru) Задачи с собеседования: LRU Cache — leetcode•
(iOS En) Interactive Tab Bar - SwiftUI•
(iOS En) iPhone Apps 101 - Project Based SwiftUI App Development•
(iOS En) Multiple Image Viewer - AsyncImage - SwiftUI•
(And Ru) Куда идёт мобильная разработка: подводим итоги 2024 года•
(And En) How to Create a FAB Explode Transition Animation in Jetpack Compose•
(And En) I've Used Jetpack Compose For 4 Years - Here's the Good and the Bad•
(Crs Ru) PWA vs Native App. Как и зачем в Альфа-Бизнесе создавали свой MobileWeb•
(Dev Ru) Проектирование и запуск разработки•
(Dev Ru) Что не так с мобильными сервисами в Android и iOS•
(Dev Ru) Mobile App Performance: метрики производительности•
(Dev Ru) Релизный процесс приложений Ozon•
(Dev Ru) Effect oriented programming — Системы эффектов в языках программирования•
(Dev En) How Notion Builds Their iOS and Android Apps•
(Mrk En) I Spent $400 on Ads: How Many App Installs Did I Get?#ios #android #mobile #video
👍1
Giffy - клиентское приложение для Giphy, созданное с использованием таких интересных технологий для iOS, как TCA (The Composable Architecture by Point-Free), Swinject, SwiftUI, Чистая архитектура с подходом Generic Protocol, модуляризация SPM и XcodeGen.
Giffy на GitHub: https://github.com/uwaisalqadri/Giffy
Платформа: iOS
⭐️: 25
Giffy на GitHub: https://github.com/uwaisalqadri/Giffy
Платформа: iOS
⭐️: 25
Что такое Lazy Variables в Swift
Lazy Variables в Swift — это свойства, значение которых не инициализируется до тех пор, пока они не будут использованы. Это полезно в тех случаях, когда вычисление значения свойства является затратным по времени или ресурсам, и вы хотите избежать его выполнения до тех пор, пока это не потребуется.
Статья: https://apptractor.ru/info/articles/lazy-variables.html
Платформа: iOS
Lazy Variables в Swift — это свойства, значение которых не инициализируется до тех пор, пока они не будут использованы. Это полезно в тех случаях, когда вычисление значения свойства является затратным по времени или ресурсам, и вы хотите избежать его выполнения до тех пор, пока это не потребуется.
Статья: https://apptractor.ru/info/articles/lazy-variables.html
Платформа: iOS
👍1
mpvKt - медиаплеер для Android, основанный на mpv-android и стремящийся предоставить более приятный пользовательский интерфейс по сравнению с оригиналом. Предоставляет лучший UI, лучшее управление историей проигрывания, более простую кастомизацию, установки таймера сна, пресеты скорости воспроизведения, лучшую работу картинки-в-картинке.
mpvKt на GitHub: https://github.com/abdallahmehiz/mpvKt
Платформа: Android
⭐️: 712
mpvKt на GitHub: https://github.com/abdallahmehiz/mpvKt
Платформа: Android
⭐️: 712
👍1
Чистим Android-проект просто и правильно
При разработке Android-приложений дисковое пространство может быстро загрязняться результатами сборки, кэшами Gradle и конфигурационными файлами IDE.
По умолчанию команда Android Studio «Build → Clean Project» удаляет не все. Могут накапливаться кэши, артефакты из модулей, остатки файлов Gradle и результаты сборки.
В этой статье представлен один скрипт, который комплексно решает все эти проблемы, с фантастическим выводом консоли, показывающим использование пространства до и после. Рассматривается macOS/Linux (с помощью Bash) и Windows (с помощью Batch), а также проясняется, как Lite-чистка скрипта сравнивается с Build → Clean Project с точки зрения освобождаемого дискового пространства и объема проекта.
Статья: https://apptractor.ru/info/articles/chistim-android-proekt-prosto-i-pravilno.html
Платформа: Android
При разработке Android-приложений дисковое пространство может быстро загрязняться результатами сборки, кэшами Gradle и конфигурационными файлами IDE.
По умолчанию команда Android Studio «Build → Clean Project» удаляет не все. Могут накапливаться кэши, артефакты из модулей, остатки файлов Gradle и результаты сборки.
В этой статье представлен один скрипт, который комплексно решает все эти проблемы, с фантастическим выводом консоли, показывающим использование пространства до и после. Рассматривается macOS/Linux (с помощью Bash) и Windows (с помощью Batch), а также проясняется, как Lite-чистка скрипта сравнивается с Build → Clean Project с точки зрения освобождаемого дискового пространства и объема проекта.
Статья: https://apptractor.ru/info/articles/chistim-android-proekt-prosto-i-pravilno.html
Платформа: Android
❤2
CodeEditTextView - текстовый редактор (замена NSTextView) для отображения и редактирования кода. Особенности: базовое редактирование текста, чрезвычайно быстрая начальная верстка, поддержка работы с большими документами, возможности настройки кодовых документов.
CodeEditTextView на GitHub: https://github.com/CodeEditApp/CodeEditTextView
Платформа: iOS
⭐️: 78
CodeEditTextView на GitHub: https://github.com/CodeEditApp/CodeEditTextView
Платформа: iOS
⭐️: 78
Управление событиями в ViewModel с помощью StateFlow, SharedFlow и Channel
Сообщество Android-разработчиков уже долгое время ведёт жаркие споры о том, что лучше использовать в ViewModel для представления событий:
Статья: https://habr.com/ru/articles/872248/
Платформа: Android
Сообщество Android-разработчиков уже долгое время ведёт жаркие споры о том, что лучше использовать в ViewModel для представления событий:
StateFlow, SharedFlow или Channel. В этой статье мы разберёмся в различиях между этими тремя подходами и определим, какой из них наиболее подходит для ваших нужд.Статья: https://habr.com/ru/articles/872248/
Платформа: Android
Видео и подкасты за неделю на @AppFiles
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#ios #android #mobile #video
•
(iOS Ru) Переезд с UIKIT на SwiftUI — кажется, УЖЕ ПОРА!•
(iOS En) Complete Habit Tracker App - SwiftUI, SwiftData CRUD•
(iOS En) Carousel With Ambient Background Effect - SwiftUI•
(iOS En) How to hide a View when the app goes into the background•
(iOS En) RawRepresentable and AppStorage•
(iOS En) Persistence Image Caching - SwiftUI•
(iOS En) Reduce Memory Consumption when using Large Images•
(And Ru) Олег Афанасьев про причину создания Rustore и будущее Play Market•
(And En) What's new in Android Studio Ladybug•
(And En) Media & Camera experiences•
(And En) How to Encrypt DataStore On Android•
(And En) Android XR Introduction - Build Apps With AR & VR Support•
(And En) How to Record the Screen of ANY Android App•
(And En) We fixed an inconsistency in Kotlin (non-local break & continue)•
(And En) Guards and Pattern Guards•
(Crs En) React Native Full Course for Beginners•
(Crs En) Full-Stack Game Development - Kotlin & Compose Multiplatform•
(Dev En) BA x Frontend: Как перестать проектировать в голове•
(Dev En) IoT Home Automation Project Tutorial#ios #android #mobile #video
Как новая функция Xcode 16 помогла избавиться от 66,000 строк кода
В Xcode 16 недавно появилась функция buildable папок для организации файлов в проектах. Это помогает IDE избавиться от необходимости использования автоматически генерируемых ссылок на файлы в pbxproj для распознавания файлов. Теперь этот процесс происходит автоматически, и изменения отражаются в Xcode, когда файлы изменяются через Finder.
Статья: https://apptractor.ru/info/articles/kak-novaya-funktsiya-xcode-16-pomogla-izbavitsya-ot-66-000-strok-koda.html
Платформа: iOS
В Xcode 16 недавно появилась функция buildable папок для организации файлов в проектах. Это помогает IDE избавиться от необходимости использования автоматически генерируемых ссылок на файлы в pbxproj для распознавания файлов. Теперь этот процесс происходит автоматически, и изменения отражаются в Xcode, когда файлы изменяются через Finder.
Статья: https://apptractor.ru/info/articles/kak-novaya-funktsiya-xcode-16-pomogla-izbavitsya-ot-66-000-strok-koda.html
Платформа: iOS
👍3
Aspecto - это макет, который идеально сохраняет соотношение сторон каждого элемента.
Фичи: работает для Jetpack Compose/Compose Multiplatform, располагает элементы для оптимального использования пространства, использует инкрементные вычисления для плавной работы, защищает от слишком высоких элементов, нарушающих макет, плавно адаптируется к различным размерам экрана.
Aspecto на GitHub: https://github.com/vipulasri/aspecto
Платформа: Android
⭐️: 30
Фичи: работает для Jetpack Compose/Compose Multiplatform, располагает элементы для оптимального использования пространства, использует инкрементные вычисления для плавной работы, защищает от слишком высоких элементов, нарушающих макет, плавно адаптируется к различным размерам экрана.
Aspecto на GitHub: https://github.com/vipulasri/aspecto
Платформа: Android
⭐️: 30
Уменьшаем написание boilerplate с помощью File Templates
Рассказываю о генерации файлов с boilerplate-кодом с помощью удобного механизма задания File Templates в средах разработки Intellij. File Templates позволяет в пару кликов создавать несколько файлов с каким-либо boilerplate-кодом. Хоть статья приводит примеры создания File Templates для Android/Kotlin Multiplatform, она может быть полезна всем, кто работает в средах разработки от Intellij.
Статья: https://habr.com/ru/companies/tbank/articles/872684/
Платформа: Android
Рассказываю о генерации файлов с boilerplate-кодом с помощью удобного механизма задания File Templates в средах разработки Intellij. File Templates позволяет в пару кликов создавать несколько файлов с каким-либо boilerplate-кодом. Хоть статья приводит примеры создания File Templates для Android/Kotlin Multiplatform, она может быть полезна всем, кто работает в средах разработки от Intellij.
Статья: https://habr.com/ru/companies/tbank/articles/872684/
Платформа: Android
❤1
Корутины в Kotlin: делаем «Optimised Out» переменные видимым
Отладка корутинов в Kotlin иногда может напоминать распутывание паутины невидимых нитей — в буквальном смысле. Одна из распространенных ошибок, с которой сталкиваются разработчики — появление страшного сообщения «optimised out» при проверке переменных в приостановленной корутине.
Статья: https://apptractor.ru/info/articles/korutiny-v-kotlin-delaem-optimised-out-peremennye-vidimymi.html
Платформа: Android
Отладка корутинов в Kotlin иногда может напоминать распутывание паутины невидимых нитей — в буквальном смысле. Одна из распространенных ошибок, с которой сталкиваются разработчики — появление страшного сообщения «optimised out» при проверке переменных в приостановленной корутине.
Статья: https://apptractor.ru/info/articles/korutiny-v-kotlin-delaem-optimised-out-peremennye-vidimymi.html
Платформа: Android
❤1
Используем диалог подтверждения в SwiftUI
Экран
Статья: https://apptractor.ru/info/articles/confirmationdialog.html
Платформа: iOS
Экран
confirmationDialog - это компонент SwiftUI, который представляет временное диалоговое окно для подтверждения действия и предоставления набора связанных с ним опций. Он появляется в нижней части экрана и предлагает пользователям кнопки для выбора.Статья: https://apptractor.ru/info/articles/confirmationdialog.html
Платформа: iOS
ViTune - приложение для Android для бесперебойного потокового воспроизведения музыки. Работает с YouTube Music, воспроизводит музыку с вашего устройства, играет в фоне и кэширует для офлайна, умеет искать песни, альбомы, видео и плейлисты, показывать новые композиции по жанру/настроению, работать со словами песен, нормализовать аудио и многое другое.
ViTune на GitHub: https://github.com/25huizengek1/ViTune
Платформа: Android
⭐️: 640
ViTune на GitHub: https://github.com/25huizengek1/ViTune
Платформа: Android
⭐️: 640
👍1
Kotlin Coroutines под капотом: отмена корутин
В этой статье мы разберем такую сущность как Job и как на самом деле под капотом отменяются корутины.
Статья: https://habr.com/ru/articles/873076/
Платформа: Android
В этой статье мы разберем такую сущность как Job и как на самом деле под капотом отменяются корутины.
Статья: https://habr.com/ru/articles/873076/
Платформа: Android
Спасение Legacy кода: укрощение контроллера представлений из тысячи строк
Статья описывает проблему работы с устаревшим кодом на примере огромного View Controller с тысячами строк кода. Автор делится пошаговым подходом к рефакторингу: выделение отдельных компонентов, улучшение тестируемости и постепенное упрощение архитектуры. Основная идея – вместо полного переписывания кода, что может быть рискованным и затратным, следует применять поэтапные улучшения, повышающие стабильность и управляемость проекта.
Это полезный и практичный материал для разработчиков, сталкивающихся с техническим долгом. Методика автора демонстрирует, как грамотно работать с кодом, не останавливая разработку и не подвергая проект опасности. Статья - неплохое руководство для рефакторинга сложных модулей. Она особенно актуальна для тех, кто занимается поддержкой крупных старых проектов или работает в командах, где часто приходится балансировать между исправлением ошибок и добавлением новых фич.
Статья: https://qualitycoding.org/legacy-code-rescue-thousand-line-view-controller/
Платформа: iOS
Статья описывает проблему работы с устаревшим кодом на примере огромного View Controller с тысячами строк кода. Автор делится пошаговым подходом к рефакторингу: выделение отдельных компонентов, улучшение тестируемости и постепенное упрощение архитектуры. Основная идея – вместо полного переписывания кода, что может быть рискованным и затратным, следует применять поэтапные улучшения, повышающие стабильность и управляемость проекта.
Это полезный и практичный материал для разработчиков, сталкивающихся с техническим долгом. Методика автора демонстрирует, как грамотно работать с кодом, не останавливая разработку и не подвергая проект опасности. Статья - неплохое руководство для рефакторинга сложных модулей. Она особенно актуальна для тех, кто занимается поддержкой крупных старых проектов или работает в командах, где часто приходится балансировать между исправлением ошибок и добавлением новых фич.
Статья: https://qualitycoding.org/legacy-code-rescue-thousand-line-view-controller/
Платформа: iOS
👍1
Распространенные ошибки в шаблоне UseCase для Android
В Android-разработке есть две распространенные ошибки:
• Внедрение строгого доступа ViewModel только к UseCase
• Создание сопоставлений «один к одному» между методами Репозитория и UseCase
Статья: https://apptractor.ru/info/articles/rasprostranennye-oshibki-v-shablone-usecase-dlya-android.html
Платформа: Android
В Android-разработке есть две распространенные ошибки:
• Внедрение строгого доступа ViewModel только к UseCase
• Создание сопоставлений «один к одному» между методами Репозитория и UseCase
Статья: https://apptractor.ru/info/articles/rasprostranennye-oshibki-v-shablone-usecase-dlya-android.html
Платформа: Android
🎯 Множественное число в текстовых представлениях SwiftUI с помощью склонения
Отображение чисел в текстах — мелочь, которая может сильно повлиять на качество пользовательского опыта. В фреймворке Foundation есть функция
Статья: https://apptractor.ru/info/articles/mnozhestvennoe-chislo-v-tekstovyh-predstavleniyah-swiftui-s-pomoschyu-skloneniya.html
Платформа: iOS
Отображение чисел в текстах — мелочь, которая может сильно повлиять на качество пользовательского опыта. В фреймворке Foundation есть функция
inflect для автоматического согласования грамматики, которая позволяет сократить количество строк локализации и упростить код.Статья: https://apptractor.ru/info/articles/mnozhestvennoe-chislo-v-tekstovyh-predstavleniyah-swiftui-s-pomoschyu-skloneniya.html
Платформа: iOS
👏1