Android Broadcast
14.2K subscribers
3.52K photos
340 videos
11 files
5.89K links
Подборка новостей и статей для Android разработчиков.

Связь с автором @android_broadcast_bot
Реклама @ab_manager

РКН https://abdev.by/rkn_tg_ab
Download Telegram
#ArchitectureComponents #BestPractices

Распространенные ошибки при использовании Android Architecture Components

Повторение - мать учения. Поэтому рекомендую освежить или наоборот ознакомиться с рекомендациями по использованию Architecture Components:
1️⃣ Утечка LiveData Observer в Fragment
2️⃣ Повторная загрузка данных после смены конфигурации
3️⃣ Утечка ViewModel
4️⃣ Позволять View изменять LiveData
5️⃣ Создание зависимостей ViewModel после каждого изменения конфигурации
6️⃣ Хранение ссылки на View в ViewModel
#BestPractices

The technical choices I make to build great Android apps

Важным началом разработки любого приложения это есть принятия подходов, которые будут использоваться при создание вашего единорога! Разработчики приложения "A-Z" делятся своим опытом:
1️⃣ UI
2️⃣ Качество кода
3️⃣ Архитектура приложения
#Exception #BestPractices

Handling Exceptions: The Easy Way

Ошибки естественным образом возникают в программах. Их причинами могут быть как неправильный код так и внешние факторы. Поэтому разработчики всегда должны писать код с учетом этих факторов.

Как понять какие ошибки стоит обрабатывать, выбрасывать, игнорировать, а возможно вообще не задумываться о их обработке? Нормальная ли практика игнорировать все ошибки, чтобы приложение не падало у пользователя?
#Exception #BestPractices

Рекомендуемая стратегия для обработки ошибок:

1️⃣ Избегайте возникновения ошибки, например проверяйте данные перед передачей в метод или проверяйте текущие состояние перед получением данных (например получение Activity/Context в Fragment)

2️⃣ Если вы знаете как обработать возникшую проблему - делайте это: отправьте запрос повторно, вызывайте другой метод и пр.

3️⃣ Пробрасывайте исключение дальше, добавляя больше информации о его причине. Более высокий слой вполне может быть способен обработать ошибку

4️⃣ Crash приложения. Возможно кто-то считает что это плохо, но он позволяет мгновенно отловить ошибку на стадии тестирования, либо легко отследить ее в проде. Если ошибка просто игнорируются и приложение не падает, то понять причину последующей некорректной работы может быть намного труднее чем увидеть stack trace и разобраться в нем.
Не забудьте настроить Firebase Crashlytics или другой сервис по отслеживанию крэшей!

Уведомляйте пользователя об ошибках, которые не дают приложению нормально работать. Пользователь должен понимать, что есть причина некорректной работы.
Также будет хорошо показать путь которым эту ошибку можно исправить, например предоставив соответствующее разрешение или доступ.
#Kotlin #Dagger #BestPractices #DependencyInjection

Dagger in Kotlin: Gotchas and Optimizations

Dagger на сегодня является самым популярным DI для Android. Почему так? Он богат возможностями, не использует рефлексию и проверят ваш граф во время компиляции.

Для всех любителей Kotlin использование Dagger порой является неудобным и трудным в силу того, что эта библиотека изначально разрабатывалась для Java и до сих пор на официальном сайте нет полноценного руководства как ее лучше использовать с Kotlin.

Команда Android решила исправит это и дать ряд рекомендаций:
👉 Всегда используйте последнюю версию Dagger (сейчас это 2.24)
👉 Включите инкрементальную компиляцию Dagger в kapt
👉 При выполнение inject зависимости в непубличное свойство класса, задавайте квалификатор на поле
👉 Dagger работает эффективнее если зависимости в @Module предоставляются через статические методы. Используйте object для объявления @Module и добавляйте аннотацию @JvmStatic к каждому методу @Provides.
👉 Работа с generic в Kotlin и Java отличается, поэтому при inject зависимостей с generic вам будет полезна аннотация @JvmSuppressWildcards
👉 Будьте осторожны с использованием single line function, так как Dagger при построение графа опирается на возвращаемый тип. Указывайте явно возвращаемый тип всегда или используйте функции с телом.
#Style #DarkTheme #Material #BestPractices

Темы и стили в Android-приложениях

Возможности кастомизации View на основе ресурсов style и атрибутов довольно обширны. В статье вы найдете подробный разбор:
👉 Отличия между темой, стилей, ThemeOverlay
👉 Что такое атрибут
👉 Как работает механизм кастомизации View на основе стилей
👉 Реализация Material Design 2.0 (Material Components)
👉 Как правильно работать со стилями, чтобы поддержать темную тему
👉 Советы по работе со стилями
#ArchitectureComponents #ViewModel #BestPractices

When to load data in ViewModels

Советы по загрузке данных в ViewModel:
Вызывать метод для загрузки данных
Запускать загрузку при создании ViewModel
Запускать загрузку данных отложено (lazy)
Загружать данные в LiveData, когда происходит вызов onActive()
Передавайте все необходимые данные в ViewModel через конструктор, а не функции или свойства
#BestPractices

10 Tips for Android Library Developers

Вы разрабатываете Android библиотеку? Думаете начать? Если да - то вам могут полезны советы, приведенные в статье, которые упростят работу конечным пользователям вашего творения.
#Architecture #BestPractices

The “Real” Repository Pattern in Android

Repository - это довольно популярный шаблон проектирования, позволяющий инкапсулировать получение/хранение данных из различных источников: сервер, БД, хранилища на устройстве и пр.

Шаблон проектирования - это рекомендация и общее описание компонентов и их отношений между ними, поэтому зачастую разработчики делают реализацию по разному и не всегда хорошо.

Наиболее популярные ошибки, которые допускают пользователи:
👉 Repository возвращает DTO (модели источников данных, которые используются источниками данных в нем) а не модели Domain слоя
👉 Различные несвязанные между собой DataSource используются одни и те же DTO
👉 Repository реализуется по на основе endpoint-ов, а не на основе модели
👉 Repository кэширует всю модель, даже те поля, которые всегда должны быть свежими
👉 DataSource используется более чем одним Repository

В статье разбираются эти лучшие практики по реализации и почему им стоит следовать
#Crashlytics #Firebase #BestPractices

How to set up Crashlytics alerting to monitor app stability

Firebase Crashlytics - это стандарт де-факто для трекинга крешей в ваших приложениях. В статье создатели сервиса рассказывают про возможности настройки уведомлений о крешах, регрессий стабильности и интеграции уведомлений с разными каналами: Slack, Jira и др.
#Kotlin #BestPractices

Дмитрий Жемеров — Идиоматичный Kotlin от форматирования до DSL

Насколько полностью вы используете возможности Kotlin? Насколько правильно вы это делаете? Может есть путь, который рекомендуют создатели? Да, он есть в первую очередь это Kotlin Coding Conventions и доклад от Дмитрия Жемерова.

Дмитрий Жемеров - это старожила JetBrains. Он участвовал в разработке многих проектов компании, включая Kotlin. Заглавное фото с маяком - его работа. Соавтор книги «Kotlin in Action».
#Kotlin #BestPractices

Стала доступна печатная версия книги "Effective Kotlin", которая содержит в себе лучшие практики. Что стоит делать как, а чего лучше избегать.

Хотите сохранить деревья и всегда иметь актуальную версию книги? Купите электронную версию.
#Architecture #BestPractices

How to start writing reusable components for Android apps?

Для чего нужно переиспользовать код? Как минимум это уменьшение затрат на разработку других проектов и отсутствие расхождения в работе в разных проектах.

Как сделать эффективное повторное использование кода? Начните со следующего:
👉 Уделяйте внимание архитектуре вашего приложения
👉 Пишите собственные View
👉 Используйте стандартное API из SDK по максимуму
👉 Dependency injection - ваш друг
👉 Выделяйте общий функционал в библиотеки/модули
#BestPractices

The Seven (Actually 10) Cardinal Sins of Android Development

Мы все крутые программисты, но даже мы можем допустить ошибки. Спешим быстрее закончить, чтобы переключиться на новую задачу. Может сроки жмут и надо быстрее сдать или уже накрыт стол и какое тут до задач. Довольно часто причиной служит незнание каких-то аспектов.

В статье разбираются ошибки, которые не стоит допускать в вашем коде. С чем-то из этого вы будете знакомы, а с чем-то нет:
👉 Статические ссылки на Android компоненты с жизненным циклом (Activity/Fragment/View и др.)
👉 Неправильно получение ссылки на Fragment
👉 Хранение Fragment в FragmentPagerAdapter (ViewPager)
👉 Аргументы в конструкторе Fragment
👉 Задание переменных Fragment с использованием set функций при создании
👉 Не сохранять состояние через в Bundle при использование ViewModel
👉 Загружать данные только при savedInstanceState == null
👉 Инициализация Fragment в некорректном состоянии
👉 Переопределение onResume()/onPause() для всего подряд
👉 Не final static переменные
#Testing #BestPractices

Unit Testing Best Practices

Наши приложения нуждаются в тестах. Необходимо автоматизировать проверки того что мы пишем, чтобы повышать качество программ и обеспечить защиту от неосторожного рефакторинга.

В статье рассматриваются чему способствует практика написания тестов, а также лучшие практики в Unit тестировании.
#BestPractices

40 советов, которые навсегда изменят ваше программирование

Статья, которая содержит 40 достаточно полезных рекомендаций для разработчика, будет полезна как новичкам, так и опытным программистам. Заголовок немного кликбейтный, потому что каждому разработчику присущ свой стиль написания кода, но советы действительно помогут пересмотреть свои взгляды на определённые вещи в разработке.
#BestPractices #Kotlin

Android library development - Modularization

Для всех разработчиков библиотек рекомендую изучить статья, чтобы лучше делать модуляризацию своих библиотек и они получались более легкими. Также в статье рассматривается правильное использование модификаторов видимости.
#bestpractices

Лучшие практики Android разработки на 2022 год

Не согласен с рекомендацией Hilt, Timber, Coil (добавил бы Glide) и ничего не сказали про Gradle KTS. Пишите в @android_broadcast_talks чтобы вы еще добавили/убрали
👎26👍14