Forwarded from Android Live 🤖
Набор статей для разработчиков
#subscribers #compose
Тут @unniked поделился ссылкой на репозиторий, где сохраняет полезные статьи для Android-разработчиков.
Всё разделяется на несколько разделов: Java, Kotlin, UI, Architecture, Jetpack, NDK и многие другие. Статей много и каждый, вне зависимости от уровня знаний, найдет для себя что почитать. 🤓
Ну и отдельно автор выделяет всеми нами ожидаемый Jetpack Compose, где также собрано множество статей для любого уровня.
У многих сейчас неделя выходных, и это может быть отличной возможностью подтянуть свои знания по Android. ✌🏻
#subscribers #compose
Тут @unniked поделился ссылкой на репозиторий, где сохраняет полезные статьи для Android-разработчиков.
Всё разделяется на несколько разделов: Java, Kotlin, UI, Architecture, Jetpack, NDK и многие другие. Статей много и каждый, вне зависимости от уровня знаний, найдет для себя что почитать. 🤓
Ну и отдельно автор выделяет всеми нами ожидаемый Jetpack Compose, где также собрано множество статей для любого уровня.
У многих сейчас неделя выходных, и это может быть отличной возможностью подтянуть свои знания по Android. ✌🏻
Forwarded from Android Broadcast
This media is not supported in your browser
VIEW IN TELEGRAM
#MotionLayout #Анимация
Motion Layout Playground - репозиторий с примерами UI и переходов, построенных на основе MotionLayout. В примере используется MotionLayout 2.1.0 (еще в стадии альфа), но часть анимаций работают и на текущей стабильной версии.
Motion Layout Playground - репозиторий с примерами UI и переходов, построенных на основе MotionLayout. В примере используется MotionLayout 2.1.0 (еще в стадии альфа), но часть анимаций работают и на текущей стабильной версии.
Forwarded from Android Live 🤖
Custom View с нуля
#view #optimizations
При создании сложного UI компонента, у вас есть несколько способов для того, чтобы достичь результата: кастомизировать стандартный компонент, найти подходящую библиотеку или написать компонент с нуля.
Последний способ является наиболее сложным, однако добавляет одно весомое преимущество — возможность кастомизации и гибкости. Другие способы дают гораздо меньший процент кастомизации. 🤔
Сегодня, нашёл цикл статей, где автор создаёт кастомный график с нуля. При этом объясняя все фазы отрисовки: на какие методы стоит обратить внимание, какой жизненный цикл у
Статья будет полезна тем, кто не так часто пишет кастомные
Ссылки на статьи первую, вторую и третью части статьи.
Ну и конечно, с Рождеством, друзья! 😉✨
#view #optimizations
При создании сложного UI компонента, у вас есть несколько способов для того, чтобы достичь результата: кастомизировать стандартный компонент, найти подходящую библиотеку или написать компонент с нуля.
Последний способ является наиболее сложным, однако добавляет одно весомое преимущество — возможность кастомизации и гибкости. Другие способы дают гораздо меньший процент кастомизации. 🤔
Сегодня, нашёл цикл статей, где автор создаёт кастомный график с нуля. При этом объясняя все фазы отрисовки: на какие методы стоит обратить внимание, какой жизненный цикл у
View, как использовать Profiler для оптимизации отрисовки и многое другое. Статья будет полезна тем, кто не так часто пишет кастомные
View, но хочет сильнее погрузиться в эту интересую тему.Ссылки на статьи первую, вторую и третью части статьи.
Ну и конечно, с Рождеством, друзья! 😉✨
Forwarded from StartAndroid
Chet Haase в двух статьях рассказывает о том, как инициализируются библиотеки при старте приложений, и, как App Startup поможет контролировать этот процесс.
#android #startup #performance
https://medium.com/androiddevelopers/app-startup-part-2-c431e80d0df
#android #startup #performance
https://medium.com/androiddevelopers/app-startup-part-2-c431e80d0df
Medium
App Startup, Part 2
Lazy Initialization
Forwarded from Android Broadcast
#Производительность #UI #RecyclerView
Improve UI Performance with Async RecyclerView Layout Loading
История оптимизации производительности RecyclerView с использованием AsyncLayoutInflater, который переносит парсинг XML в View на фоновый поток. Результаты этой оптимизации и как ее реализовывали в статье.
Improve UI Performance with Async RecyclerView Layout Loading
История оптимизации производительности RecyclerView с использованием AsyncLayoutInflater, который переносит парсинг XML в View на фоновый поток. Результаты этой оптимизации и как ее реализовывали в статье.
Forwarded from Android Broadcast
#Coroutines #RxJava
Как безболезненно мигрировать с RxJava на Kotlin Coroutines+Flow
Сравнение подходов RxJava и Flow для обработки реактивных стримов и как происходит миграция
Как безболезненно мигрировать с RxJava на Kotlin Coroutines+Flow
Сравнение подходов RxJava и Flow для обработки реактивных стримов и как происходит миграция
Гарантия видимости при синхронизации (одна из гарантий happens before):
Если поток А захватывает монитор M, затем выполняет код внутри блока, а затем релизит М, другой поток, который захватил монитор того же объекта после релиза, гарантированно увидит актуальные данные#multithreading
Forwarded from Android Broadcast
#Android11 #ScopedStorage
Scoped Storage: Не надо бояться (33 мин)
С августа 2021 все новые приложения и с ноября 2021 все обновления существующих приложений должны использовать targetSdk 30.
К изменениям лучше готовиться заранее и одно из самых крупных изменений, пришедшее с Android 11 - Scoped Storage. Начиная с targetSdk=30 флаг android:requestLegacyExternalStorage будет игнорироваться и вопрос миграции становится более актуальным. По данной теме Redmadrobot выложили запись со своего внутреннего митапа:
Таймкоды:
01:15 Disclaimer
02:10 Почему не нужно бояться
04:10 App-specific files
06:35 Cпособы обращения к Storage
08:05 Моменты из практики
16:03 Чек-лист для проверки
18:35 Permissions
21:35 Миграция
24:10 Вопросы
Ссылки из доклада:
📄Scoped Storage
📄Storage updates in Android 11
📄App data and files
Scoped Storage: Не надо бояться (33 мин)
С августа 2021 все новые приложения и с ноября 2021 все обновления существующих приложений должны использовать targetSdk 30.
К изменениям лучше готовиться заранее и одно из самых крупных изменений, пришедшее с Android 11 - Scoped Storage. Начиная с targetSdk=30 флаг android:requestLegacyExternalStorage будет игнорироваться и вопрос миграции становится более актуальным. По данной теме Redmadrobot выложили запись со своего внутреннего митапа:
Таймкоды:
01:15 Disclaimer
02:10 Почему не нужно бояться
04:10 App-specific files
06:35 Cпособы обращения к Storage
08:05 Моменты из практики
16:03 Чек-лист для проверки
18:35 Permissions
21:35 Миграция
24:10 Вопросы
Ссылки из доклада:
📄Scoped Storage
📄Storage updates in Android 11
📄App data and files
Forwarded from Android Broadcast
#AndroidOS
The legend about AIDL
Разбор механизма для коммуникации между процессами в Android
Статья из трёх частей:
1️⃣ Основы
2️⃣ AIDL в действии
3️⃣ Где используется AIDL в Android
The legend about AIDL
Разбор механизма для коммуникации между процессами в Android
Статья из трёх частей:
1️⃣ Основы
2️⃣ AIDL в действии
3️⃣ Где используется AIDL в Android
Чтобы сделать объект видимым для других потоков в наиболее безопасной манере, нужно рассмотреть один из вариантов:
1. Инициализировать объект в статическом поле. Например,
2. Положить ссылку на объект в
3. Положить ссылку на объект в правильно сконструированное
4. Положить ссылку на объект в переменную, находящуюся в теле
#multithreading
1. Инициализировать объект в статическом поле. Например,
public static Holder holder = new Holder(42)2. Положить ссылку на объект в
volatile-поле или AtomicReference3. Положить ссылку на объект в правильно сконструированное
final-поле ("правильно сконструированное" значит, что ссылка на объект не "убегает" во время конструирования объекта). 4. Положить ссылку на объект в переменную, находящуюся в теле
synchronized-блока (если монитор захвачен)#multithreading
Forwarded from Android Broadcast
#Архитектура #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👉 Пример реализации простого приложения
Forwarded from StartAndroid
Пример реализации кэша с различными режимами для репозитория.
#android #architecture #cache
https://thewerner.medium.com/android-repository-caching-with-mvvm-and-clean-architecture-7fb7b691e0e4
#android #architecture #cache
https://thewerner.medium.com/android-repository-caching-with-mvvm-and-clean-architecture-7fb7b691e0e4
Medium
Android Repository Caching with MVVM and Clean Architecture
A proposal to reduce redundant network calls by controlling the age of requested data from your repositories.
Forwarded from Android Broadcast
#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 и @ActivityRetainedScopedForwarded from Android Broadcast
#Dagger #Hilt
Hilt: Dependency Injection on Android
Серия уроков по Dagger Hilt в которой подробно рассматриваются все аспекты использования этой надстройки над Dagger и как осуществлять миграцию уже существующих Android проектов. Каждый урок совсем короткий - по несколько минут.
Hilt: Dependency Injection on Android
Серия уроков по Dagger Hilt в которой подробно рассматриваются все аспекты использования этой надстройки над Dagger и как осуществлять миграцию уже существующих Android проектов. Каждый урок совсем короткий - по несколько минут.
Если есть проблемы с пониманием кодировок, а также того, как тексты на различных языках переводятся в байтики, можно смело читать эту статью. Если станет интересно, то и вторая часть есть.
Хабр
Что нужно знать каждому разработчику о кодировках и наборах символов для работы с текстом
Это первая часть перевода статьи What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text Если вы работаете с текстом в компьютере, вам...