Топ-10 причин утечки памяти в Android
В этой статье приведены десять распространенных причин возникновения утечек памяти в Android c примерами на языке Kotlin и способы их решения.
1. Нестатические внутренние классы
2. Handler и Runnable
3. Анонимные слушатели
4. Статические представления или контексты
5. Неправильное наблюдение за LiveData
6. Синглтон с контекстом
7. Bitmap
8. WebView
9. Широковещательные приемники
10. Слушатели событий в адаптерах RecyclerView
Статья: https://apptractor.ru/info/articles/top-10-prichin-utechki-pamyati-v-android.html
Платформа: Android
В этой статье приведены десять распространенных причин возникновения утечек памяти в Android c примерами на языке Kotlin и способы их решения.
1. Нестатические внутренние классы
2. Handler и Runnable
3. Анонимные слушатели
4. Статические представления или контексты
5. Неправильное наблюдение за LiveData
6. Синглтон с контекстом
7. Bitmap
8. WebView
9. Широковещательные приемники
10. Слушатели событий в адаптерах RecyclerView
Статья: https://apptractor.ru/info/articles/top-10-prichin-utechki-pamyati-v-android.html
Платформа: Android
👍2
foSho - кастомная type safe навигация для Compose Navigation Component. Эта KSP-библиотека позволяет генерировать безопасный для типов код с минимальными усилиями и предоставляет готовые решения для объединения всех компонентов и масштабирования приложения.
foSho на GitHub: https://github.com/FunkyMuse/foSho
Платформа: Android
⭐️: 7
foSho на GitHub: https://github.com/FunkyMuse/foSho
Платформа: Android
⭐️: 7
GitHub
GitHub - FunkyMuse/foSho: Type-safe navigation library for Jetpack Compose on Android
Type-safe navigation library for Jetpack Compose on Android - FunkyMuse/foSho
👍1
Kotlin под капотом: inline функции
Многие разработчики не до конца понимают суть inline функций. Не понимают в чем профит от использования inline функций. Зачем нужен crossinline и как работает reified. Отчасти, источник популярных заблуждений про inline функции в том, что раньше на сайте kotlinlang.org было дано не совсем верное описание. Мне захотелось это исправить и наглядно показать как работают inline функции и какой профит мы получаем от их использования.
Статья: https://habr.com/ru/articles/775120/
Платформа: Android
Многие разработчики не до конца понимают суть inline функций. Не понимают в чем профит от использования inline функций. Зачем нужен crossinline и как работает reified. Отчасти, источник популярных заблуждений про inline функции в том, что раньше на сайте kotlinlang.org было дано не совсем верное описание. Мне захотелось это исправить и наглядно показать как работают inline функции и какой профит мы получаем от их использования.
Статья: https://habr.com/ru/articles/775120/
Платформа: Android
👍2
Моя малышка любит самолеты — и я сделал для нее радар
Это история о вдохновении, о формировании концепта приложения и о быстрой обратной связи с самым взыскательным из потребителей — двухлетней девочкой.
Статья: https://apptractor.ru/info/articles/moya-malyshka-lyubit-samolety-i-ya-sdelal-dlya-nee-radar.html
Платформа: iOS
Это история о вдохновении, о формировании концепта приложения и о быстрой обратной связи с самым взыскательным из потребителей — двухлетней девочкой.
Статья: https://apptractor.ru/info/articles/moya-malyshka-lyubit-samolety-i-ya-sdelal-dlya-nee-radar.html
Платформа: iOS
GridView.gif
19.8 MB
GridView - это библиотека для SwiftUI, которая упрощает создание сеток контента. GridView улучшает качество кода - просто передайте данные, а библиотека позаботится обо всем остальном.
GridView на GitHub: https://github.com/Mijick/GridView
Платформа: iOS
⭐️: 9
GridView на GitHub: https://github.com/Mijick/GridView
Платформа: iOS
⭐️: 9
Обзор актуальных инструментов шифрования в Android
Секретные данные требуют особого внимания при хранении и передаче. Инструменты для шифрования могут варьироваться по степени сложности, надёжности и производительности. В этом обзоре мы рассмотрим несколько таких инструментов, опишем их эффективность и расскажем о распространённых ошибках при их использовании.
Статья: https://habr.com/ru/companies/vk/articles/776728/
Платформа: Android
Секретные данные требуют особого внимания при хранении и передаче. Инструменты для шифрования могут варьироваться по степени сложности, надёжности и производительности. В этом обзоре мы рассмотрим несколько таких инструментов, опишем их эффективность и расскажем о распространённых ошибках при их использовании.
Статья: https://habr.com/ru/companies/vk/articles/776728/
Платформа: Android
Хабр
Обзор актуальных инструментов шифрования в Android
Привет, Хабр! Меня зовут Артур Илькаев, я работаю в департаменте экосистемных продуктов, мы разрабатываем VK ID SDK и все что связано с авторизацией и сессиями, в частности — мультиаккаунт....
❤2
FlexibleBottomSheet - это расширенный нижний экран для Jetpack Compose, который позволяет реализовать сегментированный размер и немодальный тип, подобно Google Maps. Он также предлагает дополнительные удобства, включая указание размеров листа, отслеживание его состояния и другие настройки.
FlexibleBottomSheet на GitHub: https://github.com/skydoves/FlexibleBottomSheet
Платформа: Android
⭐️: 194
FlexibleBottomSheet на GitHub: https://github.com/skydoves/FlexibleBottomSheet
Платформа: Android
⭐️: 194
👍1
DebugMenu и визуальная иерархия элементов интерфейса
Среди технических задач мое внимание привлекла задача по визуализации иерархии элементов интерфейса. Она казалась мне идеальной: помимо очевидной пользы для разработчиков, которым не всегда удобно работать с View Hierarchy в Xcode (в некоторых случаях, изображения у вью отсутствуют), и невозможно при сборках через AppCenter или TestFlight, задача обещала интересные вызовы — возможность поработать с SceneKit. К тому же, наличие открытых библиотек, решающих подобные задачи, предполагало легкость интеграции в наш проект.
Однако, как часто бывает в мире разработки, первоначальные ожидания разошлись с реальностью. В этой статье я хочу поделиться опытом, который получил, разрабатывая и внедряя эту фичу, рассказать о технических подробностях и о том, почему использование отрытых библиотек может оказаться не самым простым делом.
Статья: https://habr.com/ru/companies/alfa/articles/775186/
Платформа: iOS
Среди технических задач мое внимание привлекла задача по визуализации иерархии элементов интерфейса. Она казалась мне идеальной: помимо очевидной пользы для разработчиков, которым не всегда удобно работать с View Hierarchy в Xcode (в некоторых случаях, изображения у вью отсутствуют), и невозможно при сборках через AppCenter или TestFlight, задача обещала интересные вызовы — возможность поработать с SceneKit. К тому же, наличие открытых библиотек, решающих подобные задачи, предполагало легкость интеграции в наш проект.
Однако, как часто бывает в мире разработки, первоначальные ожидания разошлись с реальностью. В этой статье я хочу поделиться опытом, который получил, разрабатывая и внедряя эту фичу, рассказать о технических подробностях и о том, почему использование отрытых библиотек может оказаться не самым простым делом.
Статья: https://habr.com/ru/companies/alfa/articles/775186/
Платформа: iOS
Вопросы с собеседований: что такое контент-провайдер (Content Provider) в Android
Контент-провайдер (Content Provider) в Android — это компонент, который предоставляет доступ к данным другим приложениям. Он представляет данные в виде таблицы или набора таблиц, похожих на таблицы в реляционной базе данных. Контент-провайдеры используются для совместного использования данных между приложениями, а также для предоставления доступа к данным, которые хранятся в приложении, другим приложениям.
Сниппет: https://apptractor.ru/info/techhype/voprosy-s-sobesedovaniy-chto-takoe-kontent-provayder-content-provider-v-android.html
Платформа: Android
Другие вопросы: список
Контент-провайдер (Content Provider) в Android — это компонент, который предоставляет доступ к данным другим приложениям. Он представляет данные в виде таблицы или набора таблиц, похожих на таблицы в реляционной базе данных. Контент-провайдеры используются для совместного использования данных между приложениями, а также для предоставления доступа к данным, которые хранятся в приложении, другим приложениям.
Сниппет: https://apptractor.ru/info/techhype/voprosy-s-sobesedovaniy-chto-takoe-kontent-provayder-content-provider-v-android.html
Платформа: Android
Другие вопросы: список
❤4
Элегантная обработка событий в Kotlin — рефакторинг в 7 шагов
В мире разработки программного обеспечения рефакторинг кода — это герой, который спасает нас от запутанного и неэффективного кода. В этой статье мы отправимся в новое приключение, чтобы переделать Kotlin-код, обрабатывающий различные события. Наша миссия? Повысить производительность и улучшить стиль, сделав код более гладким, удобным и приятным для работы.
Шаг 1: Старт
Шаг 2: HashMap и полезная нагрузка для максимальной производительности
Шаг 3: Добавление синтаксического сахара с помощью Infix функций
Шаг 4: Использование Inline функций для элегантности
Шаг 5: Повышение register до функции расширения
Шаг 6: Устранение lateinit переменных с помощью делегированных свойств
Шаг 7: Несколько обработчиков событий для принципа единой ответственности
Статья: https://apptractor.ru/info/articles/elegantnaya-obrabotka-sobytiy-v-kotlin-refaktoring-v-7-shagov.html
Платформа: Android/Kotlin
В мире разработки программного обеспечения рефакторинг кода — это герой, который спасает нас от запутанного и неэффективного кода. В этой статье мы отправимся в новое приключение, чтобы переделать Kotlin-код, обрабатывающий различные события. Наша миссия? Повысить производительность и улучшить стиль, сделав код более гладким, удобным и приятным для работы.
Шаг 1: Старт
Шаг 2: HashMap и полезная нагрузка для максимальной производительности
Шаг 3: Добавление синтаксического сахара с помощью Infix функций
Шаг 4: Использование Inline функций для элегантности
Шаг 5: Повышение register до функции расширения
Шаг 6: Устранение lateinit переменных с помощью делегированных свойств
Шаг 7: Несколько обработчиков событий для принципа единой ответственности
Статья: https://apptractor.ru/info/articles/elegantnaya-obrabotka-sobytiy-v-kotlin-refaktoring-v-7-shagov.html
Платформа: Android/Kotlin
👍3
Pow - восхитительные анимационные эффекты SwiftUI для вашего приложения от Emerge Tools. В Pow есть разные переходы и эффекты для изменений, которые срабатывают при каждом обновлении значения, подпрыгивания - частицы, тряска, сияние, вращение и т.п.
Pow на GitHub: https://github.com/EmergeTools/Pow
Платформа: iOS
⭐️: 1.7K
Pow на GitHub: https://github.com/EmergeTools/Pow
Платформа: iOS
⭐️: 1.7K
Видео и подкасты за неделю:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
(iOS En)
Swift Data One to Many Relationships•
(iOS En)
SwiftData Starter Project•
(iOS En)
SwiftUI Shine Effect – Custom View Modifier•
(iOS En)
SwiftUI: Infinite Looping ScrollView - iOS 17•
(iOS En)
SwiftLeeds 2023 Videos•
(And Ru)
Разработка UI на Jetpack Compose•
(And Ru)
Треш-обзор Geekbrains. Полный разбор курса по Android•
(And En)
What's new in Android Studio Hedgehog•
(And En)
Now in Android: 96 - New APIs for adaptive layouts, Google Play updates, and more!•
(And En)
compileSdk VS. targetSdk VS. minSdk - THIS Is the Difference•
(And En)
Full Guide to Shared Element Transition Animation in Android with Jetpack Compose•
(Crs En)
Shared Navigation on Kotlin Multiplatform with Decompose (KMP)•
(Crs En)
Coil Goes Multiplatform with Colin White•
(Crs En)
Step-by-Step Guide: Creating a Peer-to-Peer Tic Tac Toe Game in Flutter•
(Dev Ru)
Автотесты в AvitoTech•
(Dev Ru)
Секреты собеседований с Алеексеем Быковым (Reddit)•
(Dsg Ru)
Podlodka #343: что такое Motion Design?Поставьте 👍 и поделитесь подборкой!
YouTube
5. Swift Data One to Many Relationships
This is the 5th video in the SwiftData series and the second in this section.
In this video I want to introduce a one to many relationship for our books to allow us to add multiple pull quotes for each book.
If you want to support my work, you can buy me…
In this video I want to introduce a one to many relationship for our books to allow us to add multiple pull quotes for each book.
If you want to support my work, you can buy me…
Вопросы с собеседований: в чем разница Weak и Unowned в Swift
В Swift
Сниппет: https://apptractor.ru/info/techhype/voprosy-s-sobesedovaniy-v-chem-raznitsa-weak-i-unowned-v-swift.html
Платформа: iOS
Другие вопросы: список
В Swift
weak
и unowned
- это два различных типа ссылок, которые позволяют избежать циклических зависимостей между объектами и предотвратить утечки памяти.Сниппет: https://apptractor.ru/info/techhype/voprosy-s-sobesedovaniy-v-chem-raznitsa-weak-i-unowned-v-swift.html
Платформа: iOS
Другие вопросы: список
FreeToGame - это KMP-проект для Android, iOS, Desktop и Wear OS с общим пользовательским интерфейсом на Compose UI. Проект берет данные из FreeToGame API, поддерживает динамические цвета для Android, а также светлые и темные темы для всех платформ.
FreeToGame на GitHub: https://github.com/Felix-Kariuki/FreeToGame
Платформа: кроссплатформа
⭐️: 17
FreeToGame на GitHub: https://github.com/Felix-Kariuki/FreeToGame
Платформа: кроссплатформа
⭐️: 17
👍1
IMSwitch - это переключатели для SwiftUI с изображения. Они обеспечивают визуально привлекательный и настраиваемый способ переключения между двумя опциями. Есть настройка цветов, анимаций, поддержка RTL. В целом - простой в использовании, настраиваемый UISwitch, содержащий изображения.
IMSwitch на GitHub: https://github.com/mohamed-arradi/IMSwitch
Платформа: iOS
⭐️: 7
IMSwitch на GitHub: https://github.com/mohamed-arradi/IMSwitch
Платформа: iOS
⭐️: 7
Готовим конфигурацию Android-приложения с помощью Dynamic Proxy и рефлексии
В этой статье показано, как приготовить систему «холодных» конфигов для большого Android-приложения, построенного на многомодульной архитектуре. Под «холодными» конфигами здесь подразумеваются настройки приложения, которые нужно делать локально на девайсе без необходимости загружать их из сети.
Статья: https://habr.com/ru/companies/vk/articles/777874/
Платформа: Android
В этой статье показано, как приготовить систему «холодных» конфигов для большого Android-приложения, построенного на многомодульной архитектуре. Под «холодными» конфигами здесь подразумеваются настройки приложения, которые нужно делать локально на девайсе без необходимости загружать их из сети.
Статья: https://habr.com/ru/companies/vk/articles/777874/
Платформа: Android
Использование on-demand ресурсов для безопасного хранения ключей API в iOS-приложениях
Следует помнить, что извлечь строки из файлов IPA довольно просто, и поэтому, если мы храним API-ключи в коде, кто-то другой может получить к ним доступ. Это, конечно, большая проблема для безопасности. Один из способов избежать этого - использовать ресурсы Apple загружаемые по требованию с включенной предварительной загрузкой. Это означает, что как только мы установим приложение, iOS загрузит дополнительные ресурсы отдельно, и эти ресурсы могут содержать наши API-ключи. Такое разделение позволяет не помещать API-ключи в IPA-файл.
Статья: https://apptractor.ru/info/articles/ispolzovanie-on-demand-resursov-dlya-bezopasnogo-hraneniya-klyuchey-api-v-ios-prilozheniyah.html
Платформа: iOS
Следует помнить, что извлечь строки из файлов IPA довольно просто, и поэтому, если мы храним API-ключи в коде, кто-то другой может получить к ним доступ. Это, конечно, большая проблема для безопасности. Один из способов избежать этого - использовать ресурсы Apple загружаемые по требованию с включенной предварительной загрузкой. Это означает, что как только мы установим приложение, iOS загрузит дополнительные ресурсы отдельно, и эти ресурсы могут содержать наши API-ключи. Такое разделение позволяет не помещать API-ключи в IPA-файл.
Статья: https://apptractor.ru/info/articles/ispolzovanie-on-demand-resursov-dlya-bezopasnogo-hraneniya-klyuchey-api-v-ios-prilozheniyah.html
Платформа: iOS
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
CountryCP - библиотека для выбора страны и телефонного кода для Jetpack Compose.
CountryCP на GitHub: https://github.com/tfaki/CountryCP
Платформа: Android
⭐️: 26
CountryCP на GitHub: https://github.com/tfaki/CountryCP
Платформа: Android
⭐️: 26
This media is not supported in your browser
VIEW IN TELEGRAM
Реализация параллакс-карусели из SwiftUI в Jetpack Compose
В рамках повседневной деятельности я часто изучаю последние разработки на таких платформах, как X и Medium. Однажды утром, пролистывая X, наткнулся на GitHub-репозиторий, созданный KavSoft и сразу же привлекший мое внимание. Этот проект, размещенный на KavSoft-Tutorials-iOS, представлял собой потрясающую параллакс-карусель. Ее визуальная привлекательность и удобство использования просто завораживали. В тот момент я решил, что должен воссоздать эту магию в Jetpack Compose для Android. Данная статья служит своеобразным мостом между этими двумя платформами, показывая, как преобразовать параллакс-карусель SwiftUI в ее эквивалент в Jetpack Compose.
Статья: https://apptractor.ru/SwiftUI-Jetpack-Compose
Платформа: Android
В рамках повседневной деятельности я часто изучаю последние разработки на таких платформах, как X и Medium. Однажды утром, пролистывая X, наткнулся на GitHub-репозиторий, созданный KavSoft и сразу же привлекший мое внимание. Этот проект, размещенный на KavSoft-Tutorials-iOS, представлял собой потрясающую параллакс-карусель. Ее визуальная привлекательность и удобство использования просто завораживали. В тот момент я решил, что должен воссоздать эту магию в Jetpack Compose для Android. Данная статья служит своеобразным мостом между этими двумя платформами, показывая, как преобразовать параллакс-карусель SwiftUI в ее эквивалент в Jetpack Compose.
Статья: https://apptractor.ru/SwiftUI-Jetpack-Compose
Платформа: Android
ColorfulX - это реализация многоцветных градиентов с помощью Metal. Поддерживаются платформы UIKit, SwiftUI и AppKit.
ColorfulX на GitHub: https://github.com/Lakr233/ColorfulX?
Платформа: iOS
⭐️: 49
ColorfulX на GitHub: https://github.com/Lakr233/ColorfulX?
Платформа: iOS
⭐️: 49
❤1