Kotlin Flow: Best Practices
Несколько советов при работе с Kotlin Flow.
👉 Use catch operator
👉 Play with launchIn
👉 Inject Dispatcher in flowOn
👉 Expose immutable StateFlow
Читать (En)
Несколько советов при работе с Kotlin Flow.
👉 Use catch operator
👉 Play with launchIn
👉 Inject Dispatcher in flowOn
👉 Expose immutable StateFlow
Читать (En)
👍14
Android - Testing Fundamentals
Цикл статей на тему тестов в Android.
👉 Part 1 – Writing Local tests in Android
👉 Part 2 – Writing ViewModel tests in Android
👉 Part 3 – Testing Room database with Coroutines and Flows
👉 Part 4 – Testing Api layer in Android
👉 Part 5 – Testing Composable in Jetpack Compose
Цикл статей на тему тестов в Android.
👉 Part 1 – Writing Local tests in Android
👉 Part 2 – Writing ViewModel tests in Android
👉 Part 3 – Testing Room database with Coroutines and Flows
👉 Part 4 – Testing Api layer in Android
👉 Part 5 – Testing Composable in Jetpack Compose
👍7
Quick Note on Jetpack Compose Recomposition
Еще одна полезная статья с заметками про рекомпозицию в Jetpack Compose.
И еще несколько схожих статей
👉 Jetpack Compose под капотом: Рекомпозиция и Стабильные типы
👉 Scoped recomposition in Jetpack Compose — what happens when state changes?
👉 Understanding re-composition in Jetpack Compose with a case study
Читать (En)
Еще одна полезная статья с заметками про рекомпозицию в Jetpack Compose.
И еще несколько схожих статей
👉 Jetpack Compose под капотом: Рекомпозиция и Стабильные типы
👉 Scoped recomposition in Jetpack Compose — what happens when state changes?
👉 Understanding re-composition in Jetpack Compose with a case study
Читать (En)
🔥9
Guide to Android app modularization
Официальный гайд от Гугла, который рассказывает про организацию многомодульности.
👉 What is modularization
👉 Benefits of modularization
👉 Common pitfalls
👉 Common modularization patterns
👉 Module to module communication
👉 General best practices
В качестве примера кода, ссылаются на уже всем известный проект → Now in Android App
Читать (En)
Официальный гайд от Гугла, который рассказывает про организацию многомодульности.
👉 What is modularization
👉 Benefits of modularization
👉 Common pitfalls
👉 Common modularization patterns
👉 Module to module communication
👉 General best practices
В качестве примера кода, ссылаются на уже всем известный проект → Now in Android App
Читать (En)
🔥15👍6👎2
Testing Room database with Coroutines and Flows
Третья часть из цикла статей "Android Testing Fundamentals", в которой рассказывается про тестирование Room в связке с Coroutines + Flows.
Читать (En)
Третья часть из цикла статей "Android Testing Fundamentals", в которой рассказывается про тестирование Room в связке с Coroutines + Flows.
Читать (En)
👍8🔥2
Как работает WorkManager в Android
Полезная статья про тонкости работы с WorkManager, базовые методы и как сделать так, чтоб система не грохнула фоновый процесс.
Читать (Ru)
Полезная статья про тонкости работы с WorkManager, базовые методы и как сделать так, чтоб система не грохнула фоновый процесс.
Читать (Ru)
👍15🔥1
Optimizing Android Performance
Несколько советов на тему оптимизации перфоманса.
👉 Rendering
👉 Memory
👉 Battery and network
Читать (En)
Несколько советов на тему оптимизации перфоманса.
👉 Rendering
👉 Memory
👉 Battery and network
Читать (En)
👍11🔥2
Clean Android multi-module offline-first scalable app in 2022
Крутая статейка с примером проекта, который включает в себя наверное самые актуальные технологии на данный момент. В избранное ✅
👉 Multi-module
👉 Jetpack Compose
👉 MVI
👉 Kotlin Сoroutines
👉 Kotlin Flow
👉 Kotlin serialization
👉 Hilt
👉 Room
Код на GitHub → Android Kotlin starter project - 2022
Читать (En)
Крутая статейка с примером проекта, который включает в себя наверное самые актуальные технологии на данный момент. В избранное ✅
👉 Multi-module
👉 Jetpack Compose
👉 MVI
👉 Kotlin Сoroutines
👉 Kotlin Flow
👉 Kotlin serialization
👉 Hilt
👉 Room
Код на GitHub → Android Kotlin starter project - 2022
Читать (En)
🔥19👍4🤮1
Ошибка в stacktrace из продакшена
Полезная статья о том, как stacktrace может указывать на неверное место возникновения ошибки и как анализировать обфусцированный код.
Всему виной оптимизация R8 + ProGuard, ну и определенные версии kotlin stdlib и AGP.
А вообще с R8 и ProGuard постоянно всплывают какие-то траблы, это прям отдельная тема.
Читать (Ru)
Полезная статья о том, как stacktrace может указывать на неверное место возникновения ошибки и как анализировать обфусцированный код.
Всему виной оптимизация R8 + ProGuard, ну и определенные версии kotlin stdlib и AGP.
А вообще с R8 и ProGuard постоянно всплывают какие-то траблы, это прям отдельная тема.
Читать (Ru)
👍9🔥1😁1
Comparing Jetpack Compose performance with XML
Если вы уже используете Jetpack Compose или собираетесь использовать, то наверняка вам будет интересно посмотреть сравнение производительности Jetpack Compose vs XML.
В результате, практически во всех проведенных тестахвыигрывает XML .
Читать (En)
Если вы уже используете Jetpack Compose или собираетесь использовать, то наверняка вам будет интересно посмотреть сравнение производительности Jetpack Compose vs XML.
В результате, практически во всех проведенных тестах
Читать (En)
😁15👍5👏1🤔1
Migrating My App To Android 13
Как вы все уже знаете, пару дней назад зарелизили Android 13, в котором появилось несколько важных изменений по типу runtime permissions для нотификейшнов, permissions для media и т.д.
Сообственно если еще не разбирались, вот статья с подробным описанием по миграции на Android 13.
Читать (En)
Как вы все уже знаете, пару дней назад зарелизили Android 13, в котором появилось несколько важных изменений по типу runtime permissions для нотификейшнов, permissions для media и т.д.
Сообственно если еще не разбирались, вот статья с подробным описанием по миграции на Android 13.
Читать (En)
👍11🔥1
Иерархия модулей: как выстроить связи между модулями в Android
Еще одна полезная статья от ребят с HH, про зависимости между модулями, да и в целом про то, как выстроить иерархию модулей в Android.
Читать (Ru)
Еще одна полезная статья от ребят с HH, про зависимости между модулями, да и в целом про то, как выстроить иерархию модулей в Android.
Читать (Ru)
🔥11👍2👎1
Delegation Pattern: An effective way of replacing Android’s Base Activity with native Kotlin support
Статья в которой рассматриваются общие вопросы паттерна Delegation и в качестве примера показано как с помощью Kotlin Delegate можно избавиться от Base Activity.
Базовые классы vs Делегаты – вечно холиварная тема. На всякий случай про базовые классы, т.к. в Java/Kotlin нет множественного наследования классов, приходиться всё пихать в базовый класс, что собственно нарушает Single Responsibility Principle из SOLID.
Читать (En)
Статья в которой рассматриваются общие вопросы паттерна Delegation и в качестве примера показано как с помощью Kotlin Delegate можно избавиться от Base Activity.
Базовые классы vs Делегаты – вечно холиварная тема. На всякий случай про базовые классы, т.к. в Java/Kotlin нет множественного наследования классов, приходиться всё пихать в базовый класс, что собственно нарушает Single Responsibility Principle из SOLID.
Читать (En)
👍6💩5❤1👎1🔥1
Few steps to new level security — Play Integrity API for Android apps.
Полезная статья о том, как можно повысить уровень безопасности вашего приложения с помощью Play Integrity API.
Читать (En)
Полезная статья о том, как можно повысить уровень безопасности вашего приложения с помощью Play Integrity API.
Читать (En)
👍8🔥1👏1🤩1
How to move View with Keyboard in Android using Kotlin
Несколько дней назад решил чутка заморочиться и сделать анимацию кнопки при появлении клавиатуры на API 30+, а сегодня на глаза попалась статья, в которой как раз подробно разибрается как это реализовать.
У меня правда кейс был чуть посложнее, чем пример из статьи – было 3 кнопки вертикально и двигать нужно было самую верхнюю.
Вот еще несколько статей, которыми я воспользовался. Они 2020 года и там некоторые методы уже Deprecated, но суть понятна.
👉 Animating your keyboard (part 1)
👉 Animating your keyboard (part 2): reacting to WindowInset animations
Читать (En)
Несколько дней назад решил чутка заморочиться и сделать анимацию кнопки при появлении клавиатуры на API 30+, а сегодня на глаза попалась статья, в которой как раз подробно разибрается как это реализовать.
У меня правда кейс был чуть посложнее, чем пример из статьи – было 3 кнопки вертикально и двигать нужно было самую верхнюю.
Вот еще несколько статей, которыми я воспользовался. Они 2020 года и там некоторые методы уже Deprecated, но суть понятна.
👉 Animating your keyboard (part 1)
👉 Animating your keyboard (part 2): reacting to WindowInset animations
Читать (En)
👍9🔥6
Как создавать анимации в Jetpack Compose
Неплохая статья с разбором и примерами анимаций в Jetpack Compose. Какие есть виды анимаций, создание высокоуровневых и низкоуровневых анимаций, способы кастомизации.
Читать (Ru)
Неплохая статья с разбором и примерами анимаций в Jetpack Compose. Какие есть виды анимаций, создание высокоуровневых и низкоуровневых анимаций, способы кастомизации.
Читать (Ru)
👍12
MVI with state-machine
Серия статей о том, как готовить MVI + state-machine в Android.
👉 Part 1 – Basics
👉 Part 2 – Tools
👉 Part 3 – Modules
Серия статей о том, как готовить MVI + state-machine в Android.
👉 Part 1 – Basics
👉 Part 2 – Tools
👉 Part 3 – Modules
👍9
Testing Api layer in Android - Testing Fundamentals
Четвертая часть из цикла статей "Android Testing Fundamentals", в которой рассказывается про то, как писать unit тесты для сетевого слоя.
Читать (En)
Четвертая часть из цикла статей "Android Testing Fundamentals", в которой рассказывается про то, как писать unit тесты для сетевого слоя.
Читать (En)
🔥5👍2
6 Jetpack Compose Guidelines to Optimize Your App Performance
Несколько рекомендаций с примерами кода про оптимизации в Jetpack Compose.
👉 Write Stable Classes
👉 Rules for Writing classes
👉 State properly
👉 State read scope
👉 Running expensive calculations
👉 Defer reads
Читать (En)
Несколько рекомендаций с примерами кода про оптимизации в Jetpack Compose.
👉 Write Stable Classes
👉 Rules for Writing classes
👉 State properly
👉 State read scope
👉 Running expensive calculations
👉 Defer reads
Читать (En)
👍9🔥1
How To Avoid Use Cases Boilerplate in Android
Полезная статья, в которой рассматривается несколько подходов, с помощью которых можно уменьшить количество бойлерплейт кода для UseCases.
Приоритетный подход от автора через котлиновские Functional (SAM) interfaces.
Читать (En)
Полезная статья, в которой рассматривается несколько подходов, с помощью которых можно уменьшить количество бойлерплейт кода для UseCases.
Приоритетный подход от автора через котлиновские Functional (SAM) interfaces.
Читать (En)
👍5🔥4💩2
MAD Skills series on Performance
Если вдруг кто-то пропустил, стартовала новая серия статей про performance в рамках MAD Skills. Вышло уже 4 части, в которых разбираются такие штуки как: фазы старта приложения, скорость отрисовки кадров, как улучшить перфоманс с помощью Baseline Profiles.
👉 Introducing the MAD Skills series on Performance
👉 Important Performance Metrics
👉 Inspecting Performance
👉 Improving Performance with Baseline Profiles
Если вдруг кто-то пропустил, стартовала новая серия статей про performance в рамках MAD Skills. Вышло уже 4 части, в которых разбираются такие штуки как: фазы старта приложения, скорость отрисовки кадров, как улучшить перфоманс с помощью Baseline Profiles.
👉 Introducing the MAD Skills series on Performance
👉 Important Performance Metrics
👉 Inspecting Performance
👉 Improving Performance with Baseline Profiles
👍11