Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Упрощенное тестирование ViewModel
Начиная с
👉 Новости 👉 Платформа
Начиная с
androidx.lifecycle:lifecycle-viewmodel-testing:2.9.0-alpha01 нам доступна структура ViewModelScenario для проверки того как ViewModel переживает реконфигурацию или восстановление состояния. Пример:
class MyViewModelTest {
@Test
fun testStateRestoration() = runTest { // this: TestScope
viewModelScenario { // this: CreationExtras
MyViewModel(
scope = this@runTest,
handle = createSavedStateHandle(),
)
}.use { scenario: ViewModelScenario ->
// Устанавливаем `ViewModel` state.
scenario.recreate()
// Проверяем что state восстановился корректно
}
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🏕 Pисуем аватарки на карте
Для создания динамичных и визуально привлекательных карт иногда требуется отображать изображения, например, аватары пользователей, загружаемые с сервера.
В статье автор рассматривает, как загрузить изображение через Coil и отобразить его на карте при помощи SDK для Yandex MapKit.
Читать статью
👉 Новости 👉 Платформа
Для создания динамичных и визуально привлекательных карт иногда требуется отображать изображения, например, аватары пользователей, загружаемые с сервера.
В статье автор рассматривает, как загрузить изображение через Coil и отобразить его на карте при помощи SDK для Yandex MapKit.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
#Собес
🤔 Что такое корутины в Kotlin?
Корутины в Kotlin - это механизм для асинхронного программирования, который позволяет писать код, как обычный последовательный, но с возможностью приостановки и возобновления выполнения без блокировки потока. Они упрощают работу с параллельными задачами и позволяют выполнять асинхронные операции в удобной и структурированной форме.
👉 Новости 👉 Платформа
Корутины в Kotlin - это механизм для асинхронного программирования, который позволяет писать код, как обычный последовательный, но с возможностью приостановки и возобновления выполнения без блокировки потока. Они упрощают работу с параллельными задачами и позволяют выполнять асинхронные операции в удобной и структурированной форме.
Please open Telegram to view this post
VIEW IN TELEGRAM
YeaHub
YeaHub — тренажер собеседований по IT
5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🤯 Генерим любое мобильное приложение за пару кликов
Cursor может синхронинизироваться как с Xcode, так и Android Studio. Нужен только интернет, ноут и всего ОДИН промпт.
Разработчик пошагово показал весь процесс на видосе — он создал софт для медитации без единой строки кода.
Гайд тут
👉 Новости 👉 Платформа
Cursor может синхронинизироваться как с Xcode, так и Android Studio. Нужен только интернет, ноут и всего ОДИН промпт.
Разработчик пошагово показал весь процесс на видосе — он создал софт для медитации без единой строки кода.
Гайд тут
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
👍 Haze
Библиотека для Jetpack Compose и Compose Multiplatform, которая добавляет эффект размытия фона!
Гитхаб
👉 Новости 👉 База вопросов
Библиотека для Jetpack Compose и Compose Multiplatform, которая добавляет эффект размытия фона!
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
#полезное
😊 Realm-kotlin
SDK для Kotlin Multiplatform и Android, который используется для работы с мобильной базой данных Realm!
🟠 Этот инструмент позволяет эффективно хранить данные в офлайн-режиме и синхронизировать их с Realm Atlas. SDK поддерживает объектно-ориентированные модели данных, асинхронные обновления с использованием корутин и отслеживание изменений данных в реальном времени. Он разработан так, чтобы минимизировать потребление ресурсов.
Гитхаб
👉 Новости 👉 База вопросов
SDK для Kotlin Multiplatform и Android, который используется для работы с мобильной базой данных Realm!
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
#Собес
🤔 Объясните концепцию перегрузки операторов в Kotlin.
Перегрузка операторов в Kotlin позволяет определять, как операторы (например,
👉 Новости 👉 Платформа
Перегрузка операторов в Kotlin позволяет определять, как операторы (например,
+ , -, *) работают с пользовательскими классами. Для этого используется модификатор operator перед функцией, которая описывает поведение оператора. Это улучшает читаемость кода и делает пользовательские классы более интуитивными в использовании.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🫡 Опасности добавления permission READ_MEDIA_IMAGES
Если вы релизите часто приложение, вы верно знаете о правилах гугла в отношении
👉 Новости 👉 База вопросов
Если вы релизите часто приложение, вы верно знаете о правилах гугла в отношении
permission. Автор статьи решает задачу отображения превью существующих фото из девайса. О его попытках можно узнать тут, но как итог - фичу полностью ревертнули, чтобы не блокировать релиз.Please open Telegram to view this post
VIEW IN TELEGRAM
👎1
#статьи
😴 Task.sleep() и Task.yield()
В Swift Concurrency мы можем использовать Task.sleep() и Task.yield(), чтобы перевести конкретную задачу в режим ожидания или приостановки в течение определённого периода времени. Оба они выглядят и ведут себя одинаково, но есть несколько существенных различий, о которых следует знать Swift-разработчикам.
Зная эти различия, вы сможете лучше понять, когда и как использовать те или иные функции, а также оптимизировать свой код соответствующим образом. Прежде чем перейти к рассмотрению различий, автор сначала объясняет, что делают эти модификаторы.
Читать статью
👉 Новости 👉 База вопросов
В Swift Concurrency мы можем использовать Task.sleep() и Task.yield(), чтобы перевести конкретную задачу в режим ожидания или приостановки в течение определённого периода времени. Оба они выглядят и ведут себя одинаково, но есть несколько существенных различий, о которых следует знать Swift-разработчикам.
Зная эти различия, вы сможете лучше понять, когда и как использовать те или иные функции, а также оптимизировать свой код соответствующим образом. Прежде чем перейти к рассмотрению различий, автор сначала объясняет, что делают эти модификаторы.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
AppTractor
Task.sleep() и Task.yield(): в чем разница
Оба они выглядят и ведут себя одинаково, но есть несколько существенных различий, о которых следует знать Swift-разработчикам.
#полезное
😊 Руководство по использованию unsafe
В этой статье автор рассматривает различные подходы для работы с небезопасными операциями в Swift. Swift предоставляет несколько способов для работы с указателями и низкоуровневой памятью:
🟠 Прямое использование указателей без обёрток,
🟠 Применение встроенных обёрток (например, UnsafePointer, UnsafeMutablePointer, UnsafeRawPointer, с их вариациями)
🟠 Дополнительные механизмы вроде withUnsafePointer, withUnsafeMutablePointer, Unmanaged и OpaquePointer.
Читать статью
👉 Новости 👉 База вопросов
В этой статье автор рассматривает различные подходы для работы с небезопасными операциями в Swift. Swift предоставляет несколько способов для работы с указателями и низкоуровневой памятью:
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Руководство по использованию unsafe в Swift
В этой статье мы рассматрим различные подходы для работы с небезопасными операциями в языке программирования Swift. Swift предоставляет несколько способов для работы с указателями и низкоуровневой...
#Собес
🤔 Какова цель функции withContext() в Kotlin корутинах?
Функция
👉 Новости 👉 Платформа
Функция
withContext() в Kotlin корутинах используется для смены контекста выполнения корутины на другой диспетчер. Она позволяет выполнить код в другом потоке (например, для операций с сетью или ввода/вывода) без блокировки текущего потока.Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😅 Telephoto
Это инструмент для Android-разработчиков, позволяющий упростить работу с мультимедиа, предоставляя компоненты, такие как масштабируемые изображения с поддержкой жестов панорамирования и масштабирования!
🟠 Основные функции включают ZoomableImage — замену стандартного Image() с поддержкой работы с большими изображениями благодаря автоматической субдискретизации, и модификатор Modifier.zoomable(), который можно использовать для создания жестов с другими элементами интерфейса.
Гитхаб
👉 Новости 👉 База вопросов
Это инструмент для Android-разработчиков, позволяющий упростить работу с мультимедиа, предоставляя компоненты, такие как масштабируемые изображения с поддержкой жестов панорамирования и масштабирования!
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🏕 Процесс локализации для Android-приложения
Локализация относится к изменению текста приложения, форматов валют и других визуальных элементов для соответствия локали пользователя на основе его региональных предпочтений.
С введением языковых предпочтений для каждого приложения в Android 13 управление языками, специфичными для приложений, стало намного проще.
Читать статью
👉 Новости 👉 База вопросов
Локализация относится к изменению текста приложения, форматов валют и других визуальных элементов для соответствия локали пользователя на основе его региональных предпочтений.
С введением языковых предпочтений для каждого приложения в Android 13 управление языками, специфичными для приложений, стало намного проще.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥺 miuix
Библиотека компонентов пользовательского интерфейса для Kotlin Multiplatform, разработанная для создания кроссплатформенных приложений.
🚩 Библиотека использует Compose Multiplatform для обеспечения единой кодовой базы, поддерживая Android, iOS, macOS, Web и JVM. Она включает компоненты, такие как кнопки, списки и другие UI-элементы, что упрощает создание адаптивных интерфейсов, не требуя дублирования кода для каждой платформы.
Гитхаб
👉 Новости 👉 База вопросов
Библиотека компонентов пользовательского интерфейса для Kotlin Multiplatform, разработанная для создания кроссплатформенных приложений.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Как обрабатывать исключения в Kotlin корутинах?
В Kotlin корутинах исключения обрабатываются с помощью блоков
👉 Новости 👉 Платформа
В Kotlin корутинах исключения обрабатываются с помощью блоков
try-catch внутри самой корутины или в коде, который её вызывает. Если исключение не поймано в корутине, оно будет передано в вызывающий код.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 akkurate
Библиотека для валидации данных в приложениях на Kotlin!
Основные возможности
🟠 Проверка данных на соответствие определённым ограничениям.
🟠 Поддержка пользовательских ограничений и аннотаций для удобной валидации.
🟠 Трансформация данных перед их проверкой.
Гитхаб
👉 Новости 👉 База вопросов
Библиотека для валидации данных в приложениях на Kotlin!
Основные возможности
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤓 Представим, что вы хотите реализовать список сессий конференции и разделить их по дате. Кажется, что реализация такой UI-модели будет довольно удачной идеей:
В Android это будет работать отлично, так как функция mapOf создает LinkedHashMap, который сохраняет порядок вставки элементов. И на самом деле все будет точно так же работать, если в iOS используется Compose Multiplatform. Однако если UI будет нативным на каждой платформе, то вы столкнетесь с проблемой.
При интеропе Kotlin-кода в Objective-C ваш Map превратится в NSDictionary (или Dictionary в Swift), который не гарантирует порядок вставки элементов.
Таким образом, не стоит полагаться на порядок элементов в Map, так как этот интерфейс не может гарантировать его. Предпочитайте использовать списки в UI-моделях, чтобы обеспечить одинаковое поведение на всех платформах:
Если тема отличий в поведении между платформами в KMP интересна, то ставьте реакции и сделаю еще посты по теме.
👉 Новости 👉 База вопросов
data class SessionsUiModel(
val sessionGroups: Map<String, List<Session>>
)
В Android это будет работать отлично, так как функция mapOf создает LinkedHashMap, который сохраняет порядок вставки элементов. И на самом деле все будет точно так же работать, если в iOS используется Compose Multiplatform. Однако если UI будет нативным на каждой платформе, то вы столкнетесь с проблемой.
При интеропе Kotlin-кода в Objective-C ваш Map превратится в NSDictionary (или Dictionary в Swift), который не гарантирует порядок вставки элементов.
Таким образом, не стоит полагаться на порядок элементов в Map, так как этот интерфейс не может гарантировать его. Предпочитайте использовать списки в UI-моделях, чтобы обеспечить одинаковое поведение на всех платформах:
data class SessionsUiModel(
val sessions: List<SessionItem>
)
sealed interface SessionItem {
data class Header(val header: String) : SessionItem
data class Item(val session: Session) : SessionItem
}
Если тема отличий в поведении между платформами в KMP интересна, то ставьте реакции и сделаю еще посты по теме.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 AssertK
Это библиотека для выполнения утверждений (assertions) в тестах на Kotlin!
✔️ Библиотека вдохновлена AssertJ, но разработана специально для Kotlin, что позволяет использовать преимущества языка, включая методы расширения (extension methods). Это упрощает создание пользовательских утверждений и делает код тестов более лаконичным и читаемым.
✔️ AssertK поддерживает многоплатформенную разработку, работая с JVM, JS и Native. Основной подход заключается в использовании функции assertThat() для обёртки значения и вызова методов утверждений. Например, можно проверять равенство, неравенство, длину строки, свойства объектов и многое другое.
Гитхаб
👉 Новости 👉 База вопросов
Это библиотека для выполнения утверждений (assertions) в тестах на Kotlin!
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Что такое Flow в Kotlin корутинах?
Flow в Kotlin - это асинхронный поток данных, который может эмитировать несколько значений с течением времени. Он используется для обработки последовательностей данных, получаемых асинхронно, и предоставляет операторов для трансформации и комбинирования данных.
👉 Новости 👉 Платформа
Flow в Kotlin - это асинхронный поток данных, который может эмитировать несколько значений с течением времени. Он используется для обработки последовательностей данных, получаемых асинхронно, и предоставляет операторов для трансформации и комбинирования данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😊 Lynx — новый кроссплатформенный фреймворк
Теперь разработчики могут создавать нативные пользовательские интерфейсы для мобильных и веб-приложений на единой кодовой базе.
Lynx предлагает яркие интерфейсы и быструю интерактивность, идеально подходящие для масштабных приложений, таких как TikTok. Основанный на Rust, он поддерживает двухпоточное программирование и обеспечивает мощный движок рендеринга.
Читать подробнее
👉 Новости 👉 База вопросов
Теперь разработчики могут создавать нативные пользовательские интерфейсы для мобильных и веб-приложений на единой кодовой базе.
Lynx предлагает яркие интерфейсы и быструю интерактивность, идеально подходящие для масштабных приложений, таких как TikTok. Основанный на Rust, он поддерживает двухпоточное программирование и обеспечивает мощный движок рендеринга.
Читать подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1