#Архитектура #Coroutines #Reaktive
MVI Architecture with Kotlin Flows and Channels
Разбор построения архитектуры Model — View — Intent (MVI) на основе Coroutines. В статье разбирается:
👉 Основы MVI
👉 Разница
👉 Пример реализации простого приложения
MVI Architecture with Kotlin Flows and Channels
Разбор построения архитектуры Model — View — Intent (MVI) на основе Coroutines. В статье разбирается:
👉 Основы MVI
👉 Разница
StateFlow
, SharedFlow
, Channel
👉 Пример реализации простого приложения
Какой голосовой помощник вы используете на регулярной основе? (МНОЖЕСТВЕННЫЙ ВЫБОР)
Final Results
22%
Google Assistant
5%
Apple Siri
1%
Amazon Alexa
12%
Яндекс Алиса
1%
Маруся Mail.ru
1%
Решения от Сбер
66%
Не пользуюсь
1%
Другой ассистент
4%
Не участвую в опросе
#Dagger #Hilt
Hilt: custom entry points
Руководство по созданию собственных Entry Point в Dagger Hilt. Полезно если вам нужно отвязать компоненты от жизненного цикла компонентов Android:
Hilt: custom entry points
Руководство по созданию собственных Entry Point в Dagger Hilt. Полезно если вам нужно отвязать компоненты от жизненного цикла компонентов Android:
Application
, Activity
, Fragment
, View
, Service
, BroadcastReceiver
Всем привет. Решил обратиться к сообществу за помощью. Порой возникают задачки, на которые тратится много времени. Буду очень признателен, если кто-то отзовётся, чтобы помочь в
👉 Делать таймкоды для выпусков подкаста
👉 Разработка сайта
👉 Бот в Telegram
👉 Публикация анонсов в соц. сетях
Со своей стороны я могу предложить свою помощь в рамках моих компетенций. Пишите Кириллу @krlrozov, чтобы откликнуться.
👉 Делать таймкоды для выпусков подкаста
👉 Разработка сайта
👉 Бот в Telegram
👉 Публикация анонсов в соц. сетях
Со своей стороны я могу предложить свою помощь в рамках моих компетенций. Пишите Кириллу @krlrozov, чтобы откликнуться.
#AndroidBroadcast #Multiplatfrom #Livecoding
🔴 Превращаем Android приложение в Kotlin Multiplatform
Понедельник, 25 января, 10:00 GMT+3
В прямом эфире переведём приложение из Android в Kotlin Multiplatform для поддержки Android и iOS одновременно.
Эксперт - Анна Жаркова, Mobile Lead Developer/Usetech
Разработчик с опытом более 7, пишет нативно под IOS (Swift/Objective-C), Android (Kotlin/Java) и кросс-платформу. Интересуется Kotlin Multiplatform. Помимо этого преподаёт в Otus на курсах по iOS. В свободное время изучает немецкий и китайский языки, увлекается живописью
🔴 Превращаем Android приложение в Kotlin Multiplatform
Понедельник, 25 января, 10:00 GMT+3
В прямом эфире переведём приложение из Android в Kotlin Multiplatform для поддержки Android и iOS одновременно.
Эксперт - Анна Жаркова, Mobile Lead Developer/Usetech
Разработчик с опытом более 7, пишет нативно под IOS (Swift/Objective-C), Android (Kotlin/Java) и кросс-платформу. Интересуется Kotlin Multiplatform. Помимо этого преподаёт в Otus на курсах по iOS. В свободное время изучает немецкий и китайский языки, увлекается живописью
Peeking behind the forbidden door of Reflection
Reflection API в Java/Kotlin может разрушить ваш код, так как сможет вызвать ваше приватное API. Будьте осторожны
Reflection API в Java/Kotlin может разрушить ваш код, так как сможет вызвать ваше приватное API. Будьте осторожны
#Jetpack #Compose
Helping You Understand The Syntax of Jetpack Compose
Приход Jetpack Compose не только поменяет то как мы пишем UI, но и подход в коде. Вместо ООП подхода мы будем использовать функциональную композицию.
Helping You Understand The Syntax of Jetpack Compose
Приход Jetpack Compose не только поменяет то как мы пишем UI, но и подход в коде. Вместо ООП подхода мы будем использовать функциональную композицию.
#Hilt #ViewModel
Using Hilt’s ViewModelComponent
В Dagger 2.31 появился ViewModelComponent и соответствующий Scope. Для того чтобы переиспользовать сущности за пределами жизни Activity у нас существует теперь 2 scope:
Using Hilt’s ViewModelComponent
В Dagger 2.31 появился ViewModelComponent и соответствующий Scope. Для того чтобы переиспользовать сущности за пределами жизни Activity у нас существует теперь 2 scope:
@ViewModelScoped
и @ActivityRetainedScoped
#Тестирование
Вышел Robolectric 4.5 в котором появилась поддержка Android API 30 (Android 11), множество исправлений багов и улучшений
Вышел Robolectric 4.5 в котором появилась поддержка Android API 30 (Android 11), множество исправлений багов и улучшений
#Fragment #Navigation
Началась работа над поддержкой множества back стеков в Fragment. Подробности на официальном issue tracker. Ждать нововведение раньше версии AndroidX Fragment 1.4.0. Также поддержку множества back стеков получит и Navigation Component 2.4.0
Началась работа над поддержкой множества back стеков в Fragment. Подробности на официальном issue tracker. Ждать нововведение раньше версии AndroidX Fragment 1.4.0. Также поддержку множества back стеков получит и Navigation Component 2.4.0
Вам нужна комплектный блок для проводной зарядки со смартфоном/планшетом?
Anonymous Poll
46%
Да
15%
Пусть будет, про запас
21%
Нет
17%
Не участвую в опросе
#Navigation #Архитектура #Модуляризация
Разделяй и властвуй: Navigation Component в многомодульном проекте
В статье описывается подход к организации работы с Navigation Component в многомодульном проекте с множеством feature модулей.
Разделяй и властвуй: Navigation Component в многомодульном проекте
В статье описывается подход к организации работы с Navigation Component в многомодульном проекте с множеством feature модулей.
#Coroutines
How runBlocking May Surprise You
runBlocking - самый простой Coroutine Builder, который не заставляет использовать
Вызов кода
How runBlocking May Surprise You
runBlocking - самый простой Coroutine Builder, который не заставляет использовать
CoroutineScope
и подружить синхронный мир с асинхронным.Вызов кода
runBlocking(Dispatchers.Main) { ... }
на UI потоке в Android приведет к deadlock вашего приложения. И это полностью ожидаемое поведение. В статье автор делает подробный разбор как происходит работа этого кода.#Performance #Benchmark
Don’t Run Benchmarks on a Debuggable Android App
Объяснение почему делать тесты производительность на dev сборка делать не стоит и как режим работы debuggable приложений отличается от релизных приложений. Результаты тестов вы можете увидеть в таблице.
Кстати, разбор от автора статьи "Android App Startup Tip: Don’t Use Kotlin Coroutines", который понял свою ошибку
Don’t Run Benchmarks on a Debuggable Android App
Объяснение почему делать тесты производительность на dev сборка делать не стоит и как режим работы debuggable приложений отличается от релизных приложений. Результаты тестов вы можете увидеть в таблице.
Кстати, разбор от автора статьи "Android App Startup Tip: Don’t Use Kotlin Coroutines", который понял свою ошибку
#Chrome #CustomTab
Better content sharing with Custom Tabs
Custom Tabs позволяют отображать в приложении веб контент с синхронизацией Cookies, паролей, истории поиска из браузера. Причём открытие ссылки в Custom Tab происходит быстрее чем в отдельном приложении.
В Chrome 88 Custiom Tab теперь по умолчанию будет добавлять действие шаринга («поделиться»). Чтобы изменить это поведение вам надо использовать библиотеку androidx.browser 1.3.0 и новое API Share State.
Better content sharing with Custom Tabs
Custom Tabs позволяют отображать в приложении веб контент с синхронизацией Cookies, паролей, истории поиска из браузера. Причём открытие ссылки в Custom Tab происходит быстрее чем в отдельном приложении.
В Chrome 88 Custiom Tab теперь по умолчанию будет добавлять действие шаринга («поделиться»). Чтобы изменить это поведение вам надо использовать библиотеку androidx.browser 1.3.0 и новое API Share State.
Forwarded from Kotlin Multiplatform Broadcast
#Kotlin #stdlib
Kotlin Standard Library Safari. Strings (7 минут)
Новый подкаст с обзором различных API из стандартной Kotlin библиотеки. В первом эпизоде рассматривается API класс String
Kotlin Standard Library Safari. Strings (7 минут)
Новый подкаст с обзором различных API из стандартной Kotlin библиотеки. В первом эпизоде рассматривается API класс String
#UI #UX #Дизайн
Сага о мобильном дизайне, часть 2
В статье разбираются, хоть и известные для любого, кто близок к UI/UX, вещи, но все равно полезные, чтобы напомнить еще раз:
👉 UI – это про внешний вид (цвета, шрифты, тени и т.д.). UX – это про опыт пользователя (как пользователь взаимодействует с приложением, насколько успешно и удобно выполняет целевой сценарий)
👉 Тап-зона должна быть достаточной для любых пальцев
👉 Важные кнопки, элементы управления нужно располагать в области досягаемости большого пальца. Много людей управляют смартфоном большим пальцем и держат смартфон одной рукой
👉 Внимание пользователей очень ограничено. Нужно фокусировать пользователя на главном, убирать информационный шум.
👉 У пользователей разных платформ есть разные привычки. Важно соблюдать гайдлайны плаформ.
Непривычный паттерн вызывает растерянность.
👉 Выработанные UI/UX практики чаще надежнее новых инновационных подходов
Сага о мобильном дизайне, часть 2
В статье разбираются, хоть и известные для любого, кто близок к UI/UX, вещи, но все равно полезные, чтобы напомнить еще раз:
👉 UI – это про внешний вид (цвета, шрифты, тени и т.д.). UX – это про опыт пользователя (как пользователь взаимодействует с приложением, насколько успешно и удобно выполняет целевой сценарий)
👉 Тап-зона должна быть достаточной для любых пальцев
👉 Важные кнопки, элементы управления нужно располагать в области досягаемости большого пальца. Много людей управляют смартфоном большим пальцем и держат смартфон одной рукой
👉 Внимание пользователей очень ограничено. Нужно фокусировать пользователя на главном, убирать информационный шум.
👉 У пользователей разных платформ есть разные привычки. Важно соблюдать гайдлайны плаформ.
Непривычный паттерн вызывает растерянность.
👉 Выработанные UI/UX практики чаще надежнее новых инновационных подходов
#AndroidBroadcast #Новости
Новостной дайджест: Fragment Multi Backstack // Gradle 6.8 // Kotlin Roadmap
Первый выпуск новостей вам понравился и поэтому рубрика теперь становится регулярной. В новом выпуске вас ждут самые важные новости, интереснейшие статьи и события мобильной индустрии.
Новостной дайджест: Fragment Multi Backstack // Gradle 6.8 // Kotlin Roadmap
Первый выпуск новостей вам понравился и поэтому рубрика теперь становится регулярной. В новом выпуске вас ждут самые важные новости, интереснейшие статьи и события мобильной индустрии.
#ConstraintLayout #Анимация
MAD Skills - MotionLayout
Серия видео по анимациям с использованием MotionLayout (ConstraintLayout 2.0). Уже вышло 2 части:
👉 Анимация на основе ConstraintSet
👉 Анимация на основе Keyframe
MAD Skills - MotionLayout
Серия видео по анимациям с использованием MotionLayout (ConstraintLayout 2.0). Уже вышло 2 части:
👉 Анимация на основе ConstraintSet
👉 Анимация на основе Keyframe
#GooglePlay #Location #Security
New guidelines for accessing background location in Android
В этом году в Google Play вступают ограничения для приложений, которые используют доступ к местоположению пользователя в фоновом режиме работы приложения. Чтобы оставить эту функцию у себя, вам надо подать специальную форму.
В статье автор разбирает свою историю борьбы с поддержкой Google Play, чтобы доказать необходимость этой функции в его приложении.
Официальная документация
New guidelines for accessing background location in Android
В этом году в Google Play вступают ограничения для приложений, которые используют доступ к местоположению пользователя в фоновом режиме работы приложения. Чтобы оставить эту функцию у себя, вам надо подать специальную форму.
В статье автор разбирает свою историю борьбы с поддержкой Google Play, чтобы доказать необходимость этой функции в его приложении.
Официальная документация