Получи случайную криптовалюту за регистрацию!

Android Live 🤖

Логотип телеграм канала @android_live — Android Live 🤖 A
Логотип телеграм канала @android_live — Android Live 🤖
Адрес канала: @android_live
Категории: Технологии
Язык: Русский
Количество подписчиков: 5.94K
Описание канала:

Самые свежие новости, новинки и тренды Android от практикующего разработчика.
Автор: @al_gorshkov,
Чат: @android_live_chat
YouTube: youtube.com/channel/UC1BmHcuVShCt3Rb1eENbiAA
По рекламе: @ek_gorshkova

Рейтинги и Отзывы

2.67

3 отзыва

Оценить канал android_live и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

0

4 звезд

1

3 звезд

1

2 звезд

0

1 звезд

1


Последние сообщения 5

2022-05-11 13:54:40
Тут в голове родилась одна идея, но прежде реализации, хотел бы узнать:

Какие сервисы вы используете для прослушивания подкастов?
Anonymous Poll
43%
Yandex Music
10%
Apple Podcasts
29%
Google Podcasts
9%
Soundcloud
3%
Castbox
20%
Spotify
12%
Другое (напишу в комментариях)
467 voters1.6K views10:54
Открыть/Комментировать
2022-05-06 18:05:00 ​​Отмена долгих операций
#coroutines #kotlin

Тут ребята из Delivery Club рассказывают о том, как правильно организовать свой код, если все длительные операции считать отменяемыми.

В качестве примера были взяты Coroutines, что здорово.
Даже если в проекте вам не обязательно делать все операции отменяемыми, автор довольно годно рассматривает различные состоятия Coroutines, какое поведение будет при отмене, если имеются дочерние задачи, да и в целом, как сделать отмену контролируемой.
2.7K views15:05
Открыть/Комментировать
2022-05-06 14:09:34 ​​Переменные при сборке проекта

Хотел поделиться недавно найденной фичей, которая может пригодиться, если вам надо передавать разные переменные для одного и того же билда. Штука максимально простая, но я как-то не находил и не использовал её раньше.

Дано: некая переменная, которая может меняться в зависимости от разных билдов.

Заводим эту переменную в build.gradle и прописываем ей дефолтное значение, например:
def isVariable = false

Дальше добавляем проверку на наличие этой переменной в свойствах, которые будем передавать в командной строке при сборке.
if (project.hasProperty('isVariable')) {
isVariable = project.property('isVariable').toBoolean()
}

Саму переменную можно прокинуть в buildConfigField для того, чтобы видеть её из кода.

Начинаем сборку билда и передаём нужную нам переменную. По желанию, их может быть несколько.
./gradlew assembleQaRelease -PisVariable=true.

На этом, в целом всё, может быть и эта фича будет кому-то полезна.
2.6K views11:09
Открыть/Комментировать
2022-05-04 13:07:44 ​​Testing Kotlin coroutines on Android
#tests

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

Для тестов нужно добавить специальную зависимость kotlinx.coroutines.test, после которой становятся доступными сразу несколько полезных функций.
Например, функция runTest позволяет обернуть существующий код на coroutines и выполнить его.

Кроме этого, добавляются тестовые Dispatchers, которые используются только в тестах. В статье описывается, какие типы существуют, а также как корректно применить их к существующему коду.
1.3K views10:07
Открыть/Комментировать
2022-04-27 09:08:30 ​​Равенство объектов в Java и Kotlin
#kotlin

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

Наиболее интересно посмотреть на кейсы, где разные подходы к проверке на равенство могут привести к плохим результатам.
Например, в Java надо быть внимательным при наследовании одного объекта от другого и их дальнейшего сравнения: в этом случае не равные по сути объекты могут оказаться равными по функции equals(). Любопытен и тот факт, что функция сравнения часто может оказаться менее производительной, чем кажется на первый взгляд.

В Kotlin было интересно посмотреть про кейс использования массивов в data-классах.

Пара выводов из этой статьи:

Проверьте, можно ли обойтись без переопределения функций equals/hashCode. Это может помочь в производительности сравнения функций.

Если надо использовать сравнение, то лучше воспользоваться data-классами. Но не стоит использовать их повсюду, ведь при это генерируется много вспомогательных функций, которые влияют на вес приложения.

Если не получается использовать принцип Composition over inheritance, то проверьте правильность использования функций equals в абстрактном и наследуемом классах.
1.3K views06:08
Открыть/Комментировать
2022-04-25 15:05:00 ​​KMM — UI State management
#kmm

Классный цикл статей, где автор рассматривает управление состоянием View при помощи архитектуры MVI, причём и на iOS и на Android при помощи KMM.

В первой статье автор рассказывает о базовых принципах MVI и вводит те понятия, которые там используются: State, Event, SideEffect, а также делает базовую инмплементацию на примере простенького приложения. Будет полезно, если вы не очень хорошо знакомы с MVI.

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

Код супер простой и понятный, что будет полезно новичкам, которые только изучают KMM.
1.1K views12:05
Открыть/Комментировать
2022-04-18 09:05:00 ​​Flow под капотом
#flow

Отличная статья, которая показывает то, как устроен Flow под капотом.

Автор утверждает, что сама концепция Flow — проще, чем многие разработчики думают: под капотом описано много простых механизмов, которые после объединения и выдают то, что мы привыкли видеть при использовании Flow.

Для понимания всего, автор делает несколько простой лямбда-функции, которую, постепенно усложняя, превращает в подобие того, что мы видим во Flow.
1.6K views06:05
Открыть/Комментировать
2022-04-13 15:42:23
А вы переводите свой проект на Compose?
Anonymous Poll
8%
Да, уже перевёл
16%
Да, в процессе
27%
Нет, но собираюсь
25%
Нет, на xml привычнее, не собираюсь
24%
Посмотреть результаты
899 voters2.8K views12:42
Открыть/Комментировать
2022-04-13 15:40:00 ​​Как измерить производительность Compose?
#compose

Compose стремительно вливается в повседневную Android-разработку, постепенно вытесняя традиционные View. До недавнего времени было сложно понять, насколько производительными являются функции, написанные на Compose. Но с выходом последней версии 1.2.0 ситуация улучшилась, ведь добавились метрики для расчёта производительности Compose.

Очень подробная статья об использовании этих метрик написана тут, а тут мы коснёмся только нескольких моментов.

Итоговый отчёт работает в релизном билде и состоит из нескольких файлов:
• общая статистика по приложению;
• детальная статистика по каждой из функциий;
• csv-версия этой же статистики;
• информация о стабильности каждой из написанных функций.

Каждый раз мы получаем информацию о нескольких параметрах: Restartable, Skippable, Immutability & stability. Дальше, смотря на эти параметры, мы можем понять, что можно улучшить: например, если функция restartable, но не skippable, то стоит посмотреть, какие параметры являются входящими в эту функцию и почему компилятор считает некоторые из них unstable.

Пока что статистика выглядит не самой простой для понимания, но первый шаг сделан. Так что ожидаем больше статистики и более удобный вид для анализа тех данных, что у нас есть.
2.5K views12:40
Открыть/Комментировать
2022-04-12 10:05:00 ​​Android 12: Data Access Rationale
#android

В Android 12 появилась фича под названием Data Access Rationale. Далеко не все разработчики используют её в своих приложениях, хотя штука довольно важная.

По сути, это Activity, которая даёт информацию пользователю о том, для чего нужно то или иное разрешение. Её можно открыть в информации о приложении прямо из системы, а также в Privacy Dashboard.

На самом деле, добавить её в приложение довольно просто. Вот тут пошаговый гайд, связанный с добавлением и показом этого экрана.

Кажется, что это действительно важный и логичный шаг в прозрачности использования фич, требующих разрешение: не всегда понятно, почему приложение запрашивает доступ к той или иной фиче, а подобное объяснение здорово повысит лояльность пользователя.
2.2K views07:05
Открыть/Комментировать