Keyboard Transitions с MotionLayout
#view
Сегодня мне попалась интересная статья, рассказывающая о некоторых фичах при работе с
В первой части автор рассматривает работу с анимацией клавиатуры, которая появилась в Android 11.
По сути, главная задача — это связать
И конечно, отдельно рассматривается работа и на более низких версиях Android (да, 11 версия сейчас далеко не у всех пользователей).
Ссылка на статью тут.
#view
Сегодня мне попалась интересная статья, рассказывающая о некоторых фичах при работе с
Instets. В первой части автор рассматривает работу с анимацией клавиатуры, которая появилась в Android 11.
По сути, главная задача — это связать
MotionLayout и Instets при помощи WindowInsetsAnimation.Callback. И конечно, отдельно рассматривается работа и на более низких версиях Android (да, 11 версия сейчас далеко не у всех пользователей).
Ссылка на статью тут.
Удалёнка зарубежом
#stream #youtube
Одним из «трендов» ушедшего года можно назвать удалённую работу. Многие компании, которые никогда не нанимали удалённых сотрудников сейчас охотно это делают, а разработчики, которым по душе был офис привыкают к новым правилам... 🙄
Тем не менее, вопросов остаётся много, особенно если вы хотите работать удалённо с зарубежной компанией.
Давайте вместе погрузимся в тему удалёнки и поговорим о ней с разработчиком, который последние 3 года работает на зарубежные компании — Артур Бадретдинов.
Сейчас Артур является Android Team Lead в компании Squire Technologies, а за свою удалённую карьеру посетил 24 страны!🤯
Как найти такую работу, как платить налоги, как привыкнуть к разнице в часовых поясах, какие особенности в менталитете есть при работе? Эти и другие вопросы мы обсудим на YouTube канале Android Live во вторник, 26 января в 18:30.
А ещё, вы можете задать интересующие вас вопросы в форме.
Ссылка на трансляцию тут. До встречи! 😉
#stream #youtube
Одним из «трендов» ушедшего года можно назвать удалённую работу. Многие компании, которые никогда не нанимали удалённых сотрудников сейчас охотно это делают, а разработчики, которым по душе был офис привыкают к новым правилам... 🙄
Тем не менее, вопросов остаётся много, особенно если вы хотите работать удалённо с зарубежной компанией.
Давайте вместе погрузимся в тему удалёнки и поговорим о ней с разработчиком, который последние 3 года работает на зарубежные компании — Артур Бадретдинов.
Сейчас Артур является Android Team Lead в компании Squire Technologies, а за свою удалённую карьеру посетил 24 страны!🤯
Как найти такую работу, как платить налоги, как привыкнуть к разнице в часовых поясах, какие особенности в менталитете есть при работе? Эти и другие вопросы мы обсудим на YouTube канале Android Live во вторник, 26 января в 18:30.
А ещё, вы можете задать интересующие вас вопросы в форме.
Ссылка на трансляцию тут. До встречи! 😉
На чём писать код для Android?
#benchmark
Скорость разработки напрямую зависит от машины, на которой установлена среда разработки: ведь с повышением сложности проекта растёт и время его сборки, а чем шустрее работает машина, тем больше кода мы можем написать.
Да и опытные разработчики не по наслышке знают, как много Android Studio съедает ресурсов. 🙄
Выбрать компьютер для разработки не так просто: обзоры обычно не рассказывают про разработчиков, а статьи часто не дают полной картины.
Сегодня в одном из чатов наткнулся на репозиторий с тестовым проектом при помощи которого можно понять, на сколько шустро ваш компьютер справляется со сборкой проекта. Это не только поможет вам с выбором нового устройства в будущем, но и даст возможность проверить, насколько ваш текущий компьютер хорош относительно других.
Ссылка на репозиторий тут, там же и инструкция по тестированию своей машины. А тут можно почитать уже финальные результаты и решить для себя, что же прикупить для улучшения качества своей работы.
#benchmark
Скорость разработки напрямую зависит от машины, на которой установлена среда разработки: ведь с повышением сложности проекта растёт и время его сборки, а чем шустрее работает машина, тем больше кода мы можем написать.
Да и опытные разработчики не по наслышке знают, как много Android Studio съедает ресурсов. 🙄
Выбрать компьютер для разработки не так просто: обзоры обычно не рассказывают про разработчиков, а статьи часто не дают полной картины.
Сегодня в одном из чатов наткнулся на репозиторий с тестовым проектом при помощи которого можно понять, на сколько шустро ваш компьютер справляется со сборкой проекта. Это не только поможет вам с выбором нового устройства в будущем, но и даст возможность проверить, насколько ваш текущий компьютер хорош относительно других.
Ссылка на репозиторий тут, там же и инструкция по тестированию своей машины. А тут можно почитать уже финальные результаты и решить для себя, что же прикупить для улучшения качества своей работы.
А на какой операционной системе вы работаете?
Anonymous Poll
48%
Windows
35%
Mac OS
17%
Linux
0%
Другое (сообщите в ЛС)
Android Dependency Analyzer
#tools
Ресурс, который поможет проанализировать размер зависимостей в Android-проекте: ведь размер приложения — это важная метрика.
Следует сделать два простых действия: перейти на сайт ➡️ Droidanalyser, ➡️ ввести необходимую зависимость. Опционально можно ввести адрес репозитория.
Например, можно понять, что
🔻К недостатку можно отнести относительно медленную скорость работу ресурса.
Уверен, что после анализа зависимостей вы будете внимательнее относиться к тому, стоит ли заносить в проект какую-то новую либу. 👌🏻
#tools
Ресурс, который поможет проанализировать размер зависимостей в Android-проекте: ведь размер приложения — это важная метрика.
Следует сделать два простых действия: перейти на сайт ➡️ Droidanalyser, ➡️ ввести необходимую зависимость. Опционально можно ввести адрес репозитория.
Например, можно понять, что
androidx.appcompat:appcompat:1.2.0
занимает около 380 килобайт в проекте. 🔻К недостатку можно отнести относительно медленную скорость работу ресурса.
Уверен, что после анализа зависимостей вы будете внимательнее относиться к тому, стоит ли заносить в проект какую-то новую либу. 👌🏻
Инструменты для Room
#tools #comments
Room — отличная библиотека для работы с базой данных, которую сейчас используют многие приложения. Мне кажется, что это один из самых удачных и удобных инструментов из Jetpack. Плюс к этому — это и рекомендованный инструмент от Google.
Но работу с Room можно улучшить, используя следующие библиотеки:
🔹Roomigrant — инструмент, который позволяет автоматически генерировать миграции для Room, используя compile-time генерацию кода. По сути, библиотека использует созданные Room схемы и делает миграцию на их основе. Не уверен, что библиотека сделает всю работу за вас, но уж точно поможет автоматизировать эту рутинную работу
🔹RoomExplorer — быстрый viewer базы данных вашего приложения в отдельной
А какие инструменты для улучшения работы с Room вы знаете?
#tools #comments
Room — отличная библиотека для работы с базой данных, которую сейчас используют многие приложения. Мне кажется, что это один из самых удачных и удобных инструментов из Jetpack. Плюс к этому — это и рекомендованный инструмент от Google.
Но работу с Room можно улучшить, используя следующие библиотеки:
🔹Roomigrant — инструмент, который позволяет автоматически генерировать миграции для Room, используя compile-time генерацию кода. По сути, библиотека использует созданные Room схемы и делает миграцию на их основе. Не уверен, что библиотека сделает всю работу за вас, но уж точно поможет автоматизировать эту рутинную работу
🔹RoomExplorer — быстрый viewer базы данных вашего приложения в отдельной
Activity. Кроме этого, можно писать запросы для базы данных и видеть результат их работы. По сути, дублирует инструмент из Android Studio, но может быть полезным в случае работы с тестовым билдом.А какие инструменты для улучшения работы с Room вы знаете?
Podlodka Android Crew 3 сезон
Ребята из Podlodka снова делают конференцию для Android-разработчиков. На этот раз нас ждут две недели, которые разделены на секции UI и алгоритмов.
На первой неделе рассмотрим UI: лайфхаки верстки, Constraint best practice, анимации, дизайн-системы, рендеринг UI на уровне системы. Выглядит всё довольно интересно, ведь с вёрсткой мы сталкиваемся на практике очень часто, но даже в этой области всегда есть куда расти.
На второй неделе поговорим про алгоритмы: как готовиться к алгоритмической секции собеседований, где алгоритмы используются в повседневной разработке, как прокачиваться в этой области.
Начало конференции — 1 февраля, а билет сейчас стоит 3900 рублей. Подробнее о программе конфереции можно почитать тут, там же можно приобрести билет.
Для подписчиков Android Live есть две крутых новости.
Во-первых, вы можете получить билет бесплатно, просто оставив свой ник в Telegram в форме до этой пятницы 29 января 18:00. Розыгрыш проведём в этот же день.
Во-вторых, есть промокод на скидку 300 рублей при покупке билета — ANDROID_LIVE_DC3.
Кстати, если вы выиграете билет в розыгрыше, но предварительно купите билет, то вам вернут за него деньги, так что нет смысла тянуть с покупкой до пятницы 😉.
Ребята из Podlodka снова делают конференцию для Android-разработчиков. На этот раз нас ждут две недели, которые разделены на секции UI и алгоритмов.
На первой неделе рассмотрим UI: лайфхаки верстки, Constraint best practice, анимации, дизайн-системы, рендеринг UI на уровне системы. Выглядит всё довольно интересно, ведь с вёрсткой мы сталкиваемся на практике очень часто, но даже в этой области всегда есть куда расти.
На второй неделе поговорим про алгоритмы: как готовиться к алгоритмической секции собеседований, где алгоритмы используются в повседневной разработке, как прокачиваться в этой области.
Начало конференции — 1 февраля, а билет сейчас стоит 3900 рублей. Подробнее о программе конфереции можно почитать тут, там же можно приобрести билет.
Для подписчиков Android Live есть две крутых новости.
Во-первых, вы можете получить билет бесплатно, просто оставив свой ник в Telegram в форме до этой пятницы 29 января 18:00. Розыгрыш проведём в этот же день.
Во-вторых, есть промокод на скидку 300 рублей при покупке билета — ANDROID_LIVE_DC3.
Кстати, если вы выиграете билет в розыгрыше, но предварительно купите билет, то вам вернут за него деньги, так что нет смысла тянуть с покупкой до пятницы 😉.
Проясним TransactionTooLargeException
#theory
Существует ряд ошибок, которые сложно поймать при разработке или тестировании.
Есть отличная статья, где рассказывается о борьбе с этим исключением: почему оно возникает, как его найти и какие способы оптимизации кода есть, чтобы не поймать такое исключение.
Кстати, одной из главных оптимизаций является передача небольшого количества данных через
#theory
Существует ряд ошибок, которые сложно поймать при разработке или тестировании.
TransactionTooLargeException относится к ним: он может не появиться каждый раз во время написания кода, но способен испортить жизнь пользователям во время использования приложения. Дополнительной проблемой является stack, который появляется после этого краша и не несёт информации о том, в каком месте приложения случился crash.Есть отличная статья, где рассказывается о борьбе с этим исключением: почему оно возникает, как его найти и какие способы оптимизации кода есть, чтобы не поймать такое исключение.
Кстати, одной из главных оптимизаций является передача небольшого количества данных через
Bundle, но уверен, что это вы и сами знаете 😉. WorkManager 2.5.0
#updates #jetpack
Вышла новая версия
▪️управления процессами для установки фоновой работы. Полезная штука, если ваше приложение активно использует несколько процессов, и таким образом можно улучшить производительность фоновых операций. Для этого добавили новый артифакт:
▪️повысили стабильность старта
▪️ уменьшили размер буфера повторяемых задач с 7 дней до 1 + продолжительность
▪️добавили WorkManager Inspector, что на мой взгляд очень крутое обновление. Пока только в alpha версиях Android Studio, но уже выглядит обещающе и улучшит процесс отладки фоновых задач.
Подробнее про изменения можно почитать тут.
#updates #jetpack
Вышла новая версия
WorkManager — 2.5.0. Что нового:▪️управления процессами для установки фоновой работы. Полезная штука, если ваше приложение активно использует несколько процессов, и таким образом можно улучшить производительность фоновых операций. Для этого добавили новый артифакт:
androidx.work:work-multiprocess:2.5.0 и метод для установки процесса по умолчанию для работы;▪️повысили стабильность старта
JobService из ActivityManager;▪️ уменьшили размер буфера повторяемых задач с 7 дней до 1 + продолжительность
keepResultsForAtLeast. Стоит быть осторожным, если вы выполняете свои задачи раз в несколько дней;▪️добавили WorkManager Inspector, что на мой взгляд очень крутое обновление. Пока только в alpha версиях Android Studio, но уже выглядит обещающе и улучшит процесс отладки фоновых задач.
Подробнее про изменения можно почитать тут.
Результаты конкурса Podlodka Android Crew — 3 сезон
#конкурс
Итак, пришло время опубликовать результаты конкурса, который был описан тут.
В конкурсе принял участие 61 человек, при помощи генератора случайных чисел был выбран победитель — @max_ultra, с чем я его поздравляю! 🎊
Видео с выбором победителя тут. Обязательно участвуйте в новых конкурсах!
#конкурс
Итак, пришло время опубликовать результаты конкурса, который был описан тут.
В конкурсе принял участие 61 человек, при помощи генератора случайных чисел был выбран победитель — @max_ultra, с чем я его поздравляю! 🎊
Видео с выбором победителя тут. Обязательно участвуйте в новых конкурсах!
Жизнь разработчика в Германии
#интервью #экспаты
Друзья, наконец, вторая статья из рубрики, связанной с жизнью разработчиков в других странах готова.
Как всегда, она получилась объёмной и отвечает на все вопросы, которые вы задавали (и даже больше). Не скупитесь на лайки, потому что это мотивирует искать для вас авторов, а авторов — писать статьи. 🙃
Ссылка на статью тут, а вы обязательно пишите обратную связь в чат или мне в личные сообщения.
#интервью #экспаты
Друзья, наконец, вторая статья из рубрики, связанной с жизнью разработчиков в других странах готова.
Как всегда, она получилась объёмной и отвечает на все вопросы, которые вы задавали (и даже больше). Не скупитесь на лайки, потому что это мотивирует искать для вас авторов, а авторов — писать статьи. 🙃
Ссылка на статью тут, а вы обязательно пишите обратную связь в чат или мне в личные сообщения.
Medium
Жизнь разработчика в Германии
Наш сегодняшний герой — Василий Лютиков. Он проживает в городе Остфильдерн, недалеко от Штутгарта в Германии. Работает iOS-разработчиком в…
Kotlin Delegation
#kotlin
Для многих разработчиков они кажутся сложными, а также многие не знают, для чего именно им нужно писать свои собственные делегаты. 🙄
Но на практике
По сути, делегат передаёт обращения
Но одного определения будет недостаточно, поэтому вот пару полезных статей.
В этой автор рассказывает базовые принципы делегатов, а также дает пример для получения аргументов фрагмента, данных из
В следующей рассказывается о других примерах применения этого инструмента.
Ну и не забывайте про документацию, где можно также вдохновиться полезными примерами. ✌️
#kotlin
Kotlin delegates — одна из самых недооценённых фич языка. Для многих разработчиков они кажутся сложными, а также многие не знают, для чего именно им нужно писать свои собственные делегаты. 🙄
Но на практике
Kotlin delegates оказывается весьма полезной фичей, которая упрощает код и делает его более читаемым. По сути, делегат передаёт обращения
get()и set() к свойству: причём достаточно, чтобы у класса были методы getValue() и setValue() с определённой сигнатурой, без переопределения какого-то интерфейса. Но одного определения будет недостаточно, поэтому вот пару полезных статей.
В этой автор рассказывает базовые принципы делегатов, а также дает пример для получения аргументов фрагмента, данных из
SharedPreferences и получения данных из View. В следующей рассказывается о других примерах применения этого инструмента.
Ну и не забывайте про документацию, где можно также вдохновиться полезными примерами. ✌️
Подробнее про Paging 3
#jetpack #room
Библиотека Paging 3 помогает отображать большие списки в
Отмечу явные плюсы:
▪️поддержка
▪️полностью написана на Kotlin;
▪️поддержка разделителей, статусов загрузки, состояний ошибки;
▪️интеграция с Room. Добавлю, что интеграция работает также и при использовании
Начать работу с этим классным компонентом поможет эта статья, а разобраться с состояниями загрузки, обновлениями и разделителями для списка — эта.
Добавлю также один баг, который важно учитывать при использовании Paging 3. Эта библиотека работает некорректно, если поместить
#jetpack #room
Библиотека Paging 3 помогает отображать большие списки в
RecyclerView. Сейчас она в статусе alpha, но уже хорошо работает.Отмечу явные плюсы:
▪️поддержка
Flow и Coroutines. Ну и кроме этого есть поддержка RxJava и LiveData, если она вам нужна;▪️полностью написана на Kotlin;
▪️поддержка разделителей, статусов загрузки, состояний ошибки;
▪️интеграция с Room. Добавлю, что интеграция работает также и при использовании
RawQuery из Room. Эта интеграция заметно упрощает работу с Paging 3.Начать работу с этим классным компонентом поможет эта статья, а разобраться с состояниями загрузки, обновлениями и разделителями для списка — эта.
Добавлю также один баг, который важно учитывать при использовании Paging 3. Эта библиотека работает некорректно, если поместить
RecyclerView в ScrollView. Будьте внимательны при использовании!Kotlin 1.4.30 и новый компилятор
#kotlin
Сегодня вышла новая версия языка Kotlin. Появилось достаточно много изменений: ▪️inline-интерфейсы;
▪️изменения в работе inline-классов;
▪️поддержка JVM records.
Полный список изменений можно найти тут.
Плюс к этому JVM IR backend компилятор перешёл в стадию beta 🎊.
О новом компиляторе говорят уже давно, и вообще он обещает быть интересным. Однако, для начала, надо убедиться, что он достаточно стабилен для public релиза. И это то, где вы можете помочь ему стать лучше 📈.
Сделать это достаточно просто:
1️⃣Включите новый компилятор его в своём конфиг файле и соберите проект хотя бы раз. В идеале включить его по умолчанию для вашего проекта, потому что не только сборка, но и дебаг имеют значение в этом тестировании.
2️⃣В случае если будут баги, то можно репортить их в Youtrack или публичный Slack Kotlin.
Давайте вместе доведём новый JVM IR backend до стабильного состояния!
#kotlin
Сегодня вышла новая версия языка Kotlin. Появилось достаточно много изменений: ▪️inline-интерфейсы;
▪️изменения в работе inline-классов;
▪️поддержка JVM records.
Полный список изменений можно найти тут.
Плюс к этому JVM IR backend компилятор перешёл в стадию beta 🎊.
О новом компиляторе говорят уже давно, и вообще он обещает быть интересным. Однако, для начала, надо убедиться, что он достаточно стабилен для public релиза. И это то, где вы можете помочь ему стать лучше 📈.
Сделать это достаточно просто:
1️⃣Включите новый компилятор его в своём конфиг файле и соберите проект хотя бы раз. В идеале включить его по умолчанию для вашего проекта, потому что не только сборка, но и дебаг имеют значение в этом тестировании.
2️⃣В случае если будут баги, то можно репортить их в Youtrack или публичный Slack Kotlin.
Давайте вместе доведём новый JVM IR backend до стабильного состояния!
Модуляризация Android-приложений
#architecture
Разделение на модули — это довольно важная штука, особенно для больших приложений. Сегодня я нашел несколько свежих статей на эту тему, которые дают базовое представление о разделении приложений на модули с примером реализации.
В первой части рассматриваются причины разделения монолита на модули, а также показывается схема этого разделения. Основные причины — уменьшение скорости сборки, разделение на архитектуру и переиспользование компонентов.
Во второй и третьей частях рассматривается пример ручной и ленивой илициализации модулей их их сбрасывания.
#architecture
Разделение на модули — это довольно важная штука, особенно для больших приложений. Сегодня я нашел несколько свежих статей на эту тему, которые дают базовое представление о разделении приложений на модули с примером реализации.
В первой части рассматриваются причины разделения монолита на модули, а также показывается схема этого разделения. Основные причины — уменьшение скорости сборки, разделение на архитектуру и переиспользование компонентов.
Во второй и третьей частях рассматривается пример ручной и ленивой илициализации модулей их их сбрасывания.
Фидбек о канале. Пожалуйста не проходите мимо этого поста.
Всем привет. Это @al_gorshkov, автор этого канала и мне нужна ваша помощь.
Мне супер приятно получать от вас обратную связь в личных сообщениях. Это мотивирует и даёт понимание того, что то, что ты делаешь — не зря. И сейчас мне хотелось бы чуть больше понимать, в какую сторону двигаться дальше.
Я создал небольшую форму с вопросами о Telegram и YouTube каналах. Пожалуйста, ответь на вопросы, ведь всё анонимно, а заполнение займёт буквально 2 минуты. А мне даст мотивацию радовать вас еще более качественным контентом на канале. 🤝
Давайте вместе сделаем Android Live ещё лучше!
Всем привет. Это @al_gorshkov, автор этого канала и мне нужна ваша помощь.
Мне супер приятно получать от вас обратную связь в личных сообщениях. Это мотивирует и даёт понимание того, что то, что ты делаешь — не зря. И сейчас мне хотелось бы чуть больше понимать, в какую сторону двигаться дальше.
Я создал небольшую форму с вопросами о Telegram и YouTube каналах. Пожалуйста, ответь на вопросы, ведь всё анонимно, а заполнение займёт буквально 2 минуты. А мне даст мотивацию радовать вас еще более качественным контентом на канале. 🤝
Давайте вместе сделаем Android Live ещё лучше!
KMM, Swift UI и Jetpack Compose
#compose #kmm #crossplatform
Мы с вами уже не раз обсуждали Jetpack Compose на канале, и даже провели шикарную live-coding сессию, которую можно посмотреть тут.
Кроме просто замены xml-подхода в нативной разработке, Compose отлично стыкуется с KMM и UI-слоем для Android. Ну а для UI-слоя на iOS подходит Swift UI, который тоже является декларативным фреимворком.
Чтобы попробовать такой подход, есть хорошая статья, где по шагам описывается создание простого проекта с использованием описанных выше технологий. Для архитектуры автор хочет использовать MVI, хотя сейчас там только один экран, который сделан без архитектуры.
В любом случае, статья даёт возможность пощупать классные технологии. А запустить приложение, написанное при помщи Kotlin на iOS — бесценно.😁
#compose #kmm #crossplatform
Мы с вами уже не раз обсуждали Jetpack Compose на канале, и даже провели шикарную live-coding сессию, которую можно посмотреть тут.
Кроме просто замены xml-подхода в нативной разработке, Compose отлично стыкуется с KMM и UI-слоем для Android. Ну а для UI-слоя на iOS подходит Swift UI, который тоже является декларативным фреимворком.
Чтобы попробовать такой подход, есть хорошая статья, где по шагам описывается создание простого проекта с использованием описанных выше технологий. Для архитектуры автор хочет использовать MVI, хотя сейчас там только один экран, который сделан без архитектуры.
В любом случае, статья даёт возможность пощупать классные технологии. А запустить приложение, написанное при помщи Kotlin на iOS — бесценно.😁
Как сделать адаптеры в RecyclerView лучше?
#kotlin #recyclerview
При написании стандартных адаптеров в
То есть при добавлении нового элемента в список, нам нужно менять адаптер в нескольких местах.
Существует несколько способов улучшения работы с адаптерами:
1️⃣ Использование layout в качестве идентификатора. Стоит помнить, что layout — это уникальный int, который можно использовать в качестве идентификатора. В этой статье автор предлагает использовать
2️⃣ Использование Delegate для описание логики ViewHolder. Второй подход схож с первым. Можно прописать всю логику для работы с ViewHolder в одном классе
3️⃣ Использование библиотек. Во втором подходе уже был описан пример созданной библиотеки, но кроме неё есть ещё их огромное множество. На мой взгляд, удачная библиотека описана в этой статье и называется Kiel. При помощи Kotlin DSL наш адаптер становится компактным, а кроме этого мы можем использовать библиотеку как с Paging Library, так и с Diff Utils. Стоит обратить внимание и применить подобный подход для своих приложений, если вам нравится DSL.
А как вы улучшаете свои адаптеры?
#kotlin #recyclerview
При написании стандартных адаптеров в
RecyclerView, мы часто сталкиваемся с дублированием кода. Особенно это заметно при использовании разных ViewType. Думаю, что многим знаком подобный код:if (things.get(position) is Duck) {
return TYPE_DUCK
} else if (things.get(position) is Mouse) {
return TYPE_MOUSE
}То есть при добавлении нового элемента в список, нам нужно менять адаптер в нескольких местах.
Существует несколько способов улучшения работы с адаптерами:
1️⃣ Использование layout в качестве идентификатора. Стоит помнить, что layout — это уникальный int, который можно использовать в качестве идентификатора. В этой статье автор предлагает использовать
TypeFactory, где можно перечислить всю логику работы с идентификаторами для адаптера, и в случае добавления нового элемента – просто дописать строку в этой Factory. Хороший подход, который можно улучшить и использовать без добавления библиотек.2️⃣ Использование Delegate для описание логики ViewHolder. Второй подход схож с первым. Можно прописать всю логику для работы с ViewHolder в одном классе
Delegate. Потом просто регистрировать подходящие делегаты для нужного адаптера, не думая про имплементацию. Почитать подробнее про подход можно тут и уже есть библиотека, которую стоит изучить прежде чем затягивать к себе в проект.3️⃣ Использование библиотек. Во втором подходе уже был описан пример созданной библиотеки, но кроме неё есть ещё их огромное множество. На мой взгляд, удачная библиотека описана в этой статье и называется Kiel. При помощи Kotlin DSL наш адаптер становится компактным, а кроме этого мы можем использовать библиотеку как с Paging Library, так и с Diff Utils. Стоит обратить внимание и применить подобный подход для своих приложений, если вам нравится DSL.
А как вы улучшаете свои адаптеры?
Миграция с SharedPreferences на Jetpack DataStore
#jetpack
Новая библиотека от Google призвана заменить уже давно знакомую библиотеку для хранения небольших данных —
Она существует в двух версиях:
Почему же Google покусились на давно известную библиотеку? Главная проблема — это то, что при чтении данных из
Также в
В целом, пока эта библиотека в alpha-версии, поэтому стоит внимательно тащить её в основной проект. Уже есть обёртки для RxJava 2 и 3 версии, если вы используете эти библиотеки. Но если думаете мигрировать — вот краткий гайд, который расскажет, как это сделать. Выглядит достаточно просто, поэтому проблем быть не должно. 🤞🏻
#jetpack
Новая библиотека от Google призвана заменить уже давно знакомую библиотеку для хранения небольших данных —
SharedPreferences. Она существует в двух версиях:
Preferences DataStore и Proto DataStore. Первая — даёт возможность хранить и получать доступ к данным по ключу, не требует предварительной схемы данных и не предоставляет type safety. Вторая — требует предварительную схему данных через protocol buffer, но при этом предоставляет type safety.Почему же Google покусились на давно известную библиотеку? Главная проблема — это то, что при чтении данных из
SharedPreferences необходимо открыть файл, где хранятся эти значения, и теоретически это может привести к ANR, если вызвать чтение из UI-потока. Также в
SharedPreferences нет type safety, что может привести к ошибкам во время работы приложения и крашам.Jetpack DataStore избавилась от этих проблем, а также добавила возможность миграции данных, обработку повреждения данных и обработку ошибок при чтении.В целом, пока эта библиотека в alpha-версии, поэтому стоит внимательно тащить её в основной проект. Уже есть обёртки для RxJava 2 и 3 версии, если вы используете эти библиотеки. Но если думаете мигрировать — вот краткий гайд, который расскажет, как это сделать. Выглядит достаточно просто, поэтому проблем быть не должно. 🤞🏻
Data-классы не нужны в pojo
#comments
В чате канала начали активно обсуждать такую тему: стоит ли использовать data-классы в pojo-моделях?
С одной стороны, переопределяются полезные методы, которые могут понадобиться при работе с pojo-классами. Также, data-класс подходит под определение pojo, так как это чаще всего «классы для данных».
Но ведь чаще всего переопределяемые методы не нужны pojo: мы делаем из них другие модели, которые уже могут быть data-классами. Поэтому, мы лишний раз генерируем несколько ненужных нам методов, которые потом не используем.
Например, если мы получаем json с сервера, то чаще всего нам нужно просто сделать из этого json некую модель (например entity для Room) и сохранить её. Никакие методы из pojo-классов не используются.
А как думаете вы? Обсудим в комментариях под постом.
#comments
В чате канала начали активно обсуждать такую тему: стоит ли использовать data-классы в pojo-моделях?
С одной стороны, переопределяются полезные методы, которые могут понадобиться при работе с pojo-классами. Также, data-класс подходит под определение pojo, так как это чаще всего «классы для данных».
Но ведь чаще всего переопределяемые методы не нужны pojo: мы делаем из них другие модели, которые уже могут быть data-классами. Поэтому, мы лишний раз генерируем несколько ненужных нам методов, которые потом не используем.
Например, если мы получаем json с сервера, то чаще всего нам нужно просто сделать из этого json некую модель (например entity для Room) и сохранить её. Никакие методы из pojo-классов не используются.
А как думаете вы? Обсудим в комментариях под постом.
IPC в Android
#theory
IPC — это понятие, означающее межпроцессное взаимодействие. Если мы говорим про это взаимодействие в рамках Android, то подразумеваем или общение между различными приложениями, или общение между разными процессами одного приложения (приложение, где некоторые их его компонентов запущены в разных процессах).
Поделюсь с вами несколькими статьями, которые расскажут про эту недооценённую тему больше.
В Android существует несколько видов межпроцессного взаимодействия:
🔹AIDL — приложение вызывает метод другого приложения на том же устройстве и эта процедура называется иначе – RPC (Remote Procedure Call). Так как эти методы могут быть вызваны многими приложениями одновременно, необходимо помнить про потокобезопасность. Расшифровывается он, кстати, как Android-IDL (Interface Definition Language). По факту, это один из самых базовых методов обмена сообщениями на языке. Понять, как настроить приложение на приём и отправку подобных сообщений можно тут.
🔹Messenger — метод похож на предыдущий, имеет такую же архитектуру. Его легче сделать в приложении, так как он по сути создаёт AIDL за вас, тем самым не заставляет разработчика делать лишнюю работу. Правда, цена такой простоты — меньшая гибкость по сравнению с AIDL. Почитать подробнее можно тут.
🔹Broadcast — наверное, самый популярный из описанных методов. Broadcast может быть отправлен только системой или другим приложением, а приложения могут слушать эти сообщения при помощи
#theory
IPC — это понятие, означающее межпроцессное взаимодействие. Если мы говорим про это взаимодействие в рамках Android, то подразумеваем или общение между различными приложениями, или общение между разными процессами одного приложения (приложение, где некоторые их его компонентов запущены в разных процессах).
Поделюсь с вами несколькими статьями, которые расскажут про эту недооценённую тему больше.
В Android существует несколько видов межпроцессного взаимодействия:
🔹AIDL — приложение вызывает метод другого приложения на том же устройстве и эта процедура называется иначе – RPC (Remote Procedure Call). Так как эти методы могут быть вызваны многими приложениями одновременно, необходимо помнить про потокобезопасность. Расшифровывается он, кстати, как Android-IDL (Interface Definition Language). По факту, это один из самых базовых методов обмена сообщениями на языке. Понять, как настроить приложение на приём и отправку подобных сообщений можно тут.
🔹Messenger — метод похож на предыдущий, имеет такую же архитектуру. Его легче сделать в приложении, так как он по сути создаёт AIDL за вас, тем самым не заставляет разработчика делать лишнюю работу. Правда, цена такой простоты — меньшая гибкость по сравнению с AIDL. Почитать подробнее можно тут.
🔹Broadcast — наверное, самый популярный из описанных методов. Broadcast может быть отправлен только системой или другим приложением, а приложения могут слушать эти сообщения при помощи
BroadcastReceiver. Важно помнить про области видимости ваших Broadcast, их следует настроить в AndroidManifest. Детальнее можно почитать тут.