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

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


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

2021-08-24 13:05:00 ​​Как приложение OkCredit улучшило запуск приложения
#optimizations

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

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

Вот несколько главных «пожирателей» времени запуска:
инициализация Dagger — были найдены тяжёлые объекты, которые переделаны на ленивую инициализацию.
инициализация объектов в фоновый поток — перенесли инициализации API в фоновый поток. Думаю, что не стоит перенаправлять все инициализации туда, ведь можно словить исключения, связанные с отсутсвием подходящего API при работе приложения.
переделали экран загрузки — добавили плоские View, что также улучшило время запуска.
убрали Firebase trace — интересный пункт, говорящий о том, что Firebase performance monitoring может замедлить первоначальный запуск приложения. Ребята решили вообще убрать его из проекта.
ещё парочку пунктов, о которых можно почитать в статье.

Ну а если вам интересно, с чего вообще начать оптимизации запуска приложений, то вот крутой туториал
1.5K views10:05
Открыть/Комментировать
2021-08-19 16:05:00 ​​Kotlin callbackFlow — пример использования
#kotlin #flow

Flow в Kotlin — очень крутой API, который, по мнению Google, является рекомендуемым подходом для передачи данных между слоями архитектуры в приложении наряду с suspend-функциями.
Спорить не буду, так как сам давно использую Flow на всех уровнях приложения, постепенно вытесняя LiveData из проекта.

Одной из реализаций Flow является callbackFlow, который позвляет делать обёртки для данных, поставляемых через callback. Это очень удобно: например, можно оборачивать различные функции из Firebase или же встроенные в Adroid сервисы.

Автор статьи описал реализацию callbackFlow с обёрткой над получением информации о геолокации пользователя. Вышло более чем хорошо: пользователю данного сервиса остаётся лишь подписаться на изменения Flow и не заботиться о работе того, что находится под капотом.
Кроме того, автор коснулся вопросов, связанных с «шэрингом» этого Flow между разными пользователями без дублирования подписок.

Рекомендую статью, если хотите сделать свой код ещё более качественным с Flow.
1.1K views13:05
Открыть/Комментировать
2021-08-18 15:05:00
OTUS начинает новый набор продвинутого онлайн-курса «Android Developer. Professional» на Kotlin от OTUS и Альфа Банка. Курс предназначен для разработчиков с опытом от 1 года. Пройдите тест и узнайте, готовы ли вы к обучению!

ПРОЙТИ ТЕСТ ПО ПРОДВИНУТОЙ ANDROID-РАЗРАБОТКЕ: https://otus.pw/YVfb/

Хотите протестировать учебный процесс заранее? Регистрируйтесь на бесплатный 2-дневный практический интенсив «Android Lint»: https://otus.pw/A71Y/
965 views12:05
Открыть/Комментировать
2021-08-18 13:05:00 ​​Уязвимости в приложениях Samsung
#security

Любопытное исследование, которое рассказывает о списке уязвимостей в предустановленных приложениях на телефонах Samsung.

Автор провёл несколько недель в поиске уязвимостей в родных приложениях Samsung и нашёл несколько интересных деталей о том, как можно подменить установку этих приложений, как дать доступ к контактам, SMS или файлам.

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

Ссылка на первую и вторую часть статьи.
1.2K views10:05
Открыть/Комментировать
2021-08-17 16:05:00 ​​Jetpack Compose и эквивалентные View
#compose

Я уже упоминал на канале классный ресурс, который здорово экономит время при переходе с обычных xml View на Compose. Однако с релизом Jetpack Compose он стал ещё более актуальным.

Сайт позволяет найти эквиваленты различным свойствам, функциям и View в Jetpack Compose. Всё, что нужно сделать — это ввести соответсвующее свойство в поле ввода и получить результат.

Конечно, там описаны далеко не все элементы, но основные в наличии.
Ссылка на ресурс тут.
1.1K viewsedited  13:05
Открыть/Комментировать
2021-08-13 18:47:43 ​​Сегодня не совсем #опрос, но неплохая тема для оффтопа.

Расскажите о самом ужасном опыте собеседования в компанию?

Это может быть всё что угодно: странные требования, несоответствие описанию, или например, неадекватные вопросы… да и вообще то, после чего у вас осталось неприятное ощущение и чувство потерянного времени.

Если хотите, то можете написать сразу в комментариях, а если комфортнее сохранить анонимность – пишите в личку, рассказ "без имен" опубликую за вас.

Ну и огромная просьба не писать названия компаний или прямых намёков на неё. Такие сообщения будут удаляться. Ведь это ваш опыт, а разводить холивар о компаниях не тема этого треда.
820 views15:47
Открыть/Комментировать
2021-08-12 14:05:00 ​​Переговоры о зарплате

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

Крутая статья, которая описывает процесс переговоров о зарплатных ожиданиях из которой можно почерпнуть несколько интересных кейсов. Тут перевод на русский, хотя лучше читать в оригинале.

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

Вообще, обсуждение зарплаты очень интересная тема, поэтому буду рад, если поделитесь полезными статьями в этой сфере.
1.1K views11:05
Открыть/Комментировать
2021-08-10 18:05:00 ​​Landscapist для изображений в Jetpack Compose
#compose #library

С появлением Jetpack Compose появилось много библиотек, которые совместимы с его парадигмой и требованиями.

Для загрузки изображений уже существует несколько вариантов, и самым известным является библиотека Coil. И хотя я не пробовал её на практике, выглядит она многообещающей: под капотом использует coroutines, добавляет не так много методов по сравнению с аналогами и из коробки поддерживает Compose.

Правда, если у вас в проекте уже есть добавленная зависимость для загрузки изображений, такая как Glide или Picasso и вы не хотите переходить на аналог, то вы можете воспользоваться библиотекой Landscapist для загрузки через одну из них в Compose.

Поддерживается большая часть современных библиотек и их возможностей по работе с изображениями. Почитать подробнее про использование можно тут.
960 views15:05
Открыть/Комментировать
2021-08-10 15:05:00 ​​Конечный автомат на Jetpack Compose
#compose

Думаю, что многие слышали о понятии конечного автомата, но не многие применяли это понятие на практике. В Android-разработке оно очень здорово ложится на работу со сложными экранами, у которых есть большое число различных кейсов использования. А ещё оно идеально вписывается в концепцию Jetpack Compose.

Давайте рассмотрим небольшой практический пример, описанный в статье. Тут автор делает экран, где есть достаточно большое количество состояний, но с подходом Finite State Machine — получается всё предсказуемо и просто.

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

Для начала автор советует описать в виде таблицы все возможные состояния текущего экрана. Из этой таблицы напрямую видны те состояния и действия, которые нужно закодить, а также убрать повторяющиеся.

На выходе мы получаем sealed class, который легко расширяется в случае добавления нового состояния. Подход классный и отлично масштабируется, поэтому рекомендую обратить внимание на пример.
1.3K views12:05
Открыть/Комментировать
2021-08-09 15:05:00 ​​Настройка видимости extension-функций
#kotlin

Extension-функции — довольно крутая фича языка Kotlin. Это позволяет расширять функциональность классов без изменения класса. Ну а вызываются эти функции совершенно также, как и те, которые относятся к этому классу, правда выделяются другим цветом в IDE.

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

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

Допустим, у нас есть класс Vehicle, который может относиться одновременно и к автомобилю, и к космическому кораблю. И есть extension-функция, которая называется:

fun Vehicle.cruiseTheBoulevard(): String {

return "cruising the boulevard with my ${getMakeAndModel()}"
}

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

fun T.cruiseTheBoulevard(): String where T: Vehicle, T: LandVehicle {

return "cruising the boulevard with my ${getMakeAndModel()}"
}

Таким образом, мы будем применять эту функцию только для классов, которые являются Vehicle и LandVehicle. Выглядит немного сложнее, чем стандартная функция, однако о такой возможности тоже полезно знать.
1.2K views12:05
Открыть/Комментировать