Глубокое погружение в Java Memory Model
Недавно смотрел очередной публичный собес и там поверхностно поднималась тема Java Memory Model.
Подумал, что нужно погуглить толковых материалов на этот счет и освежить память, а сегодня как раз на глаза попалась огненая статья про JMM с детальным разбором.
👉 Memory ordering
👉 Data race
👉 Happens-before
👉 Volatile
👉 Cache coherence
Однозначно в избранное ✅
Читать (Ru)
⁉️Какие технологии нужно знать Android-разработчикам уровня Middle?
Одна из таких технологий — Dagger.
🔥Записывайтесь 6 и 7 сентября в 20:00 мск на открытый интенсив «Dagger 101».
На занятии мы c ведущим разработчиком:
- подробно разберем API Dagger2;
- изучим генерируемый код;
- поговорим о best practices использования Dagger2.
📚После интенсива больше инструментов и навыков ждет вас на онлайн-курсе «Android Developer. Professional» от OTUS. Программа рассчитана на разработчиков с опытом создания Android-приложений.
📌Пройдите вступительный тест и присоединяйтесь!
Регистрация на 1-й день интенсива: https://otus.pw/PVJs/
Регистрация на 2-й день интенсива: https://otus.pw/kFi9/
В Google Play разрешили использовать сторонние способы оплаты в РФ
Вчера ближе к ночи во многих источниках появилась новость "Google разрешил пользователям из РФ применять альтернативные способы оплаты покупок". Посмотрел несколько источников и никаких точной инфы там не увидел. Пошёл смотреть Support - Play Console.
И вот что там написано
"Начиная со 2 августа 2022 г., положения правил Google Play в отношении платежей, требующие использования платежной системы Google Play, не применяются к разработчикам, распространяющим приложения через Google Play, требующим или принимающим платежи от пользователей в России в данный период времени."
Похоже, что все таки реально разрешили сторонние способы оплаты на период блокировки.
👉Изменения в платежной системе Google Play👉Платежи
Почему я больше не буду использовать deep linking из Navigation Component
Если еще не читали статью про deep linking из Navigation Component, обязательно почитайте. Там про некоторые недостатки с которыми ребята солкнулись при работе с deep linking из navigation component.
Сам я диплинки из navigation component еще не юзал, но выглядит это так, как будто лучше написать свой handler, это будет более гибким вариантом и более настраевым в поведении.
Это уже не первая статья, на эту тему, вот еще несколько.
👉Navigation Component-дзюцу, vol. 3 — Corner-кейсы👉Как мы внедряли навигацию из Jetpack в боевое приложение. Доклад Яндекс.ЕдыЧитать (Ru)
Testing Composable in Jetpack Compose AndroidПятая часть из цикла статей "AndroidTesting Fundamentals", в которой рассказывается как тестировать Composable в Jetpack Compose.
👉 Creating a Composable
👉 Setting up the test environment
👉 Writing test cases
Читать (En)
Фреймворк для мобильных приложений DivKit
Статья от Яндекса, про их новый опенсорсный фреймворк DivKit, с разбором возможностей на примерах. Инструмент позволяет внедрить подход server-driven UI второго поколения, то есть не просто описывать параметры блоков интерфейса с сервера, но и управлять всей версткой.
Код на GitHub → DivKit
Читать (Ru)
Часто вижу, как какой-то простой функционал делают через ж… неправильно, будь то верстка или какие-то участки кода и т.д.. Решил такие штуки с разбором иногда постить на канале.
Сегодня про верстку.
Довольно популярный кейс, встречается наверное в каждом приложении. Нужно показать какой-нибуь текст с иконкой перед ним или после него. Казалось бы всё просто, НО, очень часто встречаю верстку из 2-ух вьюх 🤦♂️. Выглядит это так: TextView + ImageView. Капец как меня такое бесит.
Ну зачем так делать, если можно обойтись одним TextView, там же есть нужный функционал для такого кейса drawableEndCompat/drawableStartCompat. Так нет, нужно нагородить дополнительно ImageView, а потом еще в коде добавить логики по отображение и т.д.
И да, программно тоже можно задать иконку для TextView, например через TextViewCompat.setCompoundDrawablesRelative()
Вывод: не нужно изобретать велосипед, используйте компоненты по назначению и пользуйтесь функциями, которые уже есть в SDK.
Optimizing RecyclerView : Pre-inflated ViewPool
Вот вам интересная статейка про то, как можно оптимизировать RecyclerView с помощью Prefetch + AsyncLayoutInflater.
Вот такой прирост в скорости получился: 214.19ms → 118.35ms
Читать (En)
5 причин записаться на факультет Android-разработки от GeekBrains: 1. Освоите языки Java и Kotlin. Вы разработаете Android-приложения и выложите его в Google Play, даже если никогда не программировали. Освоите языки Java и Kotlin, командную разработку, Material Design и принципы тестирования.
2. Возможность заработка в любых условиях: Получать заказы на фрилансе, строить карьеру в компании или стартапе, развивать собственный бизнес.
3. Гарантированное трудоустройство после обучения. Мы помогаем с трудоустройством студентам, которые показывали хорошую успеваемость на протяжении обучения и подали заявку в сервис трудоустройства.
4. Диплом государственного образца. Мы проводим обучение на основании государственной лицензии № 040485. Вы получите диплом о профессиональной переподготовке и электронный сертификат, которые можно добавить в портфолио и показать работодателю.
5. Проекты в портфолио. Вы отточите навыки на реальных задачах по Android-разработке, создадите 7 проектов для портфолио, научитесь работать самостоятельно и в команде.
И это ещё не всё!
Каждому студенту мы дарим:
- 3 месяца бесплатного доступа к Premium подписке изучения английского языка с Kespa;
- Видеокурс: Английский для IT-специалистов;
- Бесплатный ключ от продуктов JetBrains.
Вы можете получить бесплатную консультацию или сразу записаться на курс по ссылке:
https://clc.to/wxrMmw
How To Avoid Use Cases Boilerplate in Android
Полезная статья, в которой рассматривается несколько подходов, с помощью которых можно уменьшить количество бойлерплейт кода для UseCases.
Приоритетный подход от автора через котлиновские Functional (SAM) interfaces.
Читать (En)
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)
Testing Api layer in Android - Testing FundamentalsЧетвертая часть из цикла статей "AndroidTesting Fundamentals", в которой рассказывается про то, как писать unit тесты для сетевого слоя.
Читать (En)
⚡️Получи востребованную специальность iOS-разработчика с нуля до Middle-уровня за год.
🌐 В OTUS 30 августа стартуют занятия на специализации «iOS Developer», где вы создадите 2 приложения для AppStore.
📚На онлайн-курсе с опытными программистами вы последовательно освоите синтаксис Swift, основы программирования, принципы создания приложений и командной разработки.
После обучения вы сможете претендовать на позицию iOS-разработчика в IT-компаниях, а центр карьеры OTUS поможет вам в вопросах карьеры.
👉 Регистрация на курс: https://otus.pw/Lpjh/
💥 Бонус: Дополнительная скидка в 10% на курс по промокоду WKND08
Успейте занять место в группе со скидкой!
Как создавать анимации в Jetpack Compose
Неплохая статья с разбором и примерами анимаций в Jetpack Compose. Какие есть виды анимаций, создание высокоуровневых и низкоуровневых анимаций, способы кастомизации.
Читать (Ru)