Mobile Native ️️ – Telegram
Mobile Native ️️
5.61K subscribers
1.13K photos
20 videos
3 files
1.28K links
Полезные материалы по мобильной разработке. Статьи, подборки, нововведения, анонсы.

Пробустить канал → https://news.1rj.ru/str/mobile_native?boost

Автор: @artemiygreg
iOS / Swift: @swift_tips
Библиотеки и инструменты: @mobile_dev_tools
Митапы: @meetup_today
Download Telegram
Kotlin Coroutines под капотом: отмена корутин

Подробная статья про то, как устроена отмена корутин под капотом.

👉 Job и JobSupport
👉 Состояния JobSupport
👉 Получение дочерних Job
👉 Уведомление родителя и дочерних Job об отмене
👉 Как отменяется функция delay()
👉 Как отменяются suspend функции
👉 Finishing это не последнее состояние корутины?

Читать (Ru)
🔥104👍2
File Templates в IDE от Intellij

Серия статей про то, как ускорить процесс разработки и сократить написание boilerplate-кода, с помощью File Templates.

👉 Уменьшаем написание boilerplate с помощью File Templates
👉 Примеры использования File Templates для типовых сценариев
👉 Экспорт и импорт File Templates в IDE от Intellij
4🔥4👍1🥰1
Exploring ViewModel Internals

Небольшая, но довольно полезная статья про то, как ViewModel устроена под капотом: внутренняя реализация, как устроено состояние и как очищаются ресурсы.

Читать (En)
👍53🔥3
Understanding SOLID Principles with Kotlin Examples

Давно такого не было и вот опять – небольшая, но понятная статья про SOLID, с примерами на Kotlin.

Читать (En)
🔥11👍7😁52
Forwarded from Swift Tips
Потоки под капотом: как работают многопоточность и синхронизация

Большой материал про то, как потоки устроены под капотом: работа потоков, скрытые механизмы, обеспечивающие их функционирование, какую пользу практикующим iOS‑разработчикам приносит понимание внутреннего устройства потоков.

🟢Конкурентность VS параллелизм
🟢Программа
🟢Процесс
🟢Поток
🟢Задача
🟢Kernel threads vs green threads
🟢Потоки на уровне операционной системы
🟢Кооперативная многозадачность
🟢Принудительная многозадачность
🟢Планировщики
🟢Инструменты многопоточности и многозадачность
🟢Закон Амдалла
🟢Полезные в практике свойства потока
🟢Выводы

Читать (Ru)
Please open Telegram to view this post
VIEW IN TELEGRAM
👏4🔥32👍2
Media is too big
VIEW IN TELEGRAM
Elevating Your Jetpack Compose UI with GraphicsLayer

Полезная статья с разбором модификатора graphicsLayer(), его параметров и как они влияют на результат.

Читать (En)
👍12🔥52
Coroutine Suspension Mechanics: The Finite State Machine within

Ещё один полезный материал про внутрянку корутин: как устроен конечный автомат, стейт, как приостанавливается и возобновляется корутина с нужного места, локальные переменные, обработка ошибок и т.д.

👉 Introduction
👉 A Primer on Finite State Machines (FSM)
👉 Suspending Functions and the suspend Keyword
👉 Deconstructing the State Machine: How Kotlin Compiles Coroutines
👉 Meet the Tape: Using FSM Terminology to Understand Execution
👉 Pointer Movement: Resuming Execution After Suspension
👉 Exception Handling in Coroutines
👉 Scopes, Contexts, and Cancellation Mechanics
👉 Decompiled Code Examples
👉 Performance and Advantages
👉 Common Pitfalls and Misconceptions
👉 Conclusion

Читать (En)
👍115🔥3
Understanding Low Memory Management in Android: Kswapd & LMK

В статье рассказывается как Android работает с памятью на уровне системы, а именно как выделяется память и что происходит в момент нехватки памяти.

👉 Types of memory
👉 Low memory management
👉 Kswapd: kernel swap daemon
👉 LMK: Low-memory killer

Читать (En)
👍95🔥4
Kotlin Coroutines in production

Сразу несколько статей по корутинам. В первой разбираются некоторые подводные камни при работе с корутинами, а вторая про диспатчеры.

🟢The hidden costs of context switching
🟢Thread pool saturation: the silent performance killer
🟢Memory leaks through parent-child relationships
🟢Debugging nightmares and how to solve them
🟢When coroutines are the wrong choice
🟢Real-world success pattern: parallel data processing
🟢Understanding Coroutines Dispatchers
🟢CPU-intensive tasks and I/O tasks

👉 Kotlin Coroutines in production: hard won lessons and pitfalls
👉 Understanding Coroutines Dispatchers
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥41😁1
Cheatsheet for centering items in Jetpack Compose

Шпаргалка по центрированию компонентов в Jetpack Compose.

Читать (En)
👍113🔥3
Exercise Caution When Using runBlocking on Android

Полезная статья, в которой рассказывается как runBlocking устроен под капотом и почему его нужно использовать осторожно.

👉 Understanding runBlocking
👉 Examining runBlocking internals
👉 Why is using runBlocking on Android problematic?
👉 When can you use runBlocking?

Читать (En)
👍54🔥4
Развитие Android глазами разработчика

Прикольная статья с обзором того, как развивался Android для разработчиков: инструменты, технологии, подходы, паттерны и т.д.

P.S. Если есть кто из олдов – го в комменты. Что помните из популярных технологий тех времён?

Читать (Ru)
🔥6👍43
Детские ошибки при сборке Gradle-приложений

Автор статьи рассказывает про некоторые способы, с помощью которых можно ускорить сборку проекта.

👉 Вспомним этапы сборки
👉 Ускоряемся с инкрементальной сборкой
👉 Builde Cache и что с ним делать разработчику
👉 Нужен ли вам Configuration Cache
👉 Симбиоз Gradle-кэшей
👉 Поговорим о демонах
👉 Сборка на бинарном интерфейсе: ABI vs non-ABI

Читать (Ru)
👍13🔥54😁1
Seamless shimmer integration with existing Compose code

Статья с примером реализации шиммеров в Jetpack Compose, с помощью кастомного модификатора + CompositionLocalProvider

Читать (En)
👍62🔥2😁2🤔2
Composition Locals in Jetpack Compose: A Beginner-to-Advanced Guide

Подробный гайд по CompositionLocal в Jetpack Compose: что это такое, в каких случаях может быть полезно и как создавать кастомные.

Читать (En)
🎉9👍52🔥1💩1
Android Use Cases: From Basic Implementation to Multi-Provider and Multi-Module Systems

Снова про use case`ы – большая статья, с различными способами и примерами реализации.

👉 Introduction
👉 What Is a Use Case
👉 Implementing a Simple Use Case
👉 Injecting Use Cases with Koin
👉 Using the Use Case in a ViewModel
👉 Combining Similar Use Cases into a Manager
👉 Multiple Implementations Example: Liskov Substitution Principle by example
👉 Transitioning from Single Module to Multi-Module Payment Systems
👉 Why not just use Multi-Providers as a module in a Multi-Module app?

Читать (En)
🔥7👍42
Секреты JVM: что происходит с ошибками под капотом

В статье рассказывается как JVM обрабатывает исключения на низком уровне, что такое таблица исключений и какие сценарии используются для вариантов try-catch и try-finally.

Читать (Ru)
👍5🔥42
KMP for Mobile Native Developers: The Book

Онлайн книга по KMP, которая охватывает основные аспекты: структура проекта, модуляризация, архитектурные рекомендации, интеграция с библиотеками Jetpack, хранилище, тестирование и т.д.

🟢Introduction to Kotlin Multiplatform
🟢Understanding the Basic Project Structure
🟢Dependency Injection
🟢Modularization
🟢Testing
🟢Using Native Libraries in Kotlin Multiplatform
🟢Libraries (Networking, Storage, Database, Multiplatform Jetpack Libraries)

Читать (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
14🔥8👍2😁2💩2
TrustedTime API: Introducing a reliable approach to time keeping for your apps

Google выпустил новое API для безопасной работы с временем на устройстве.

TrustedTime использует защищенную инфраструктуру Google для предоставления надежного источника времени и периодически синхронизирует свои часы с серверами Google, которые имеют доступ к высокоточному источнику времени.

Читать (En)
👍125🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Why Not Compose!

Репозиторий представляет собой сборник коллекций анимаций, композиций и пользовательских интерфейсов с использованием Jetpack Compose.

GitHub → Why Not Compose
👍9🔥43👎1
Should you use Kotlin Sequences for Performance?

Многие по умолчанию считают, что Sequences дают буст в производительности для кейсов с большим количеством преобразований в цепочке. Так вот, это не совсем так, поскольку на производительность влияет множество факторов.

Подробней и с различными замерами, можно ознакомиться в статье.

👉 Collections
👉 Sequences
👉 Flow
👉 Applying transformations
👉 Benchmark

Читать (En)
👍72🔥2👎1