Android-разработка
5 subscribers
12 photos
51 links
О разработке под Android с моей точки зрения.
Download Telegram
Forwarded from Android Live 🤖
​​Набор статей для разработчиков
#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 (еще в стадии альфа), но часть анимаций работают и на текущей стабильной версии.
Forwarded from Android Live 🤖
​​Custom View с нуля
#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
Forwarded from Android Broadcast
#Производительность #UI #RecyclerView

Improve UI Performance with Async RecyclerView Layout Loading

История оптимизации производительности RecyclerView с использованием AsyncLayoutInflater, который переносит парсинг XML в View на фоновый поток. Результаты этой оптимизации и как ее реализовывали в статье.
Forwarded from Android Broadcast
#Coroutines #RxJava

Как безболезненно мигрировать с 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
Forwarded from Android Broadcast
#AndroidOS

The legend about AIDL

Разбор механизма для коммуникации между процессами в Android

Статья из трёх частей:
1️⃣ Основы
2️⃣ AIDL в действии
3️⃣ Где используется AIDL в Android
Чтобы сделать объект видимым для других потоков в наиболее безопасной манере, нужно рассмотреть один из вариантов:
1. Инициализировать объект в статическом поле. Например, public static Holder holder = new Holder(42)
2. Положить ссылку на объект в volatile-поле или AtomicReference
3. Положить ссылку на объект в правильно сконструированное final-поле ("правильно сконструированное" значит, что ссылка на объект не "убегает" во время конструирования объекта).
4. Положить ссылку на объект в переменную, находящуюся в теле synchronized-блока (если монитор захвачен)

#multithreading
Forwarded from Android Broadcast
#Архитектура #Coroutines #Reaktive

MVI Architecture with Kotlin Flows and Channels

Разбор построения архитектуры Model — View — Intent (MVI) на основе Coroutines. В статье разбирается:
👉 Основы MVI
👉 Разница StateFlow, SharedFlow, Channel
👉 Пример реализации простого приложения
Forwarded from Android Broadcast
#Hilt #ViewModel

Using Hilt’s ViewModelComponent

В Dagger 2.31 появился ViewModelComponent и соответствующий Scope. Для того чтобы переиспользовать сущности за пределами жизни Activity у нас существует теперь 2 scope: @ViewModelScoped и @ActivityRetainedScoped
Forwarded from Android Broadcast
#Dagger #Hilt

Hilt: Dependency Injection on Android

Серия уроков по Dagger Hilt в которой подробно рассматриваются все аспекты использования этой надстройки над Dagger и как осуществлять миграцию уже существующих Android проектов. Каждый урок совсем короткий - по несколько минут.
Если есть проблемы с пониманием кодировок, а также того, как тексты на различных языках переводятся в байтики, можно смело читать эту статью. Если станет интересно, то и вторая часть есть.