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

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


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

2022-08-31 16:29:49
Какие технологии нужно знать Android-разработчикам уровня Middle?

Одна из таких технологий — Dagger.
Записывайтесь 6 и 7 сентября в 20:00 мск на открытый интенсив «Dagger 101». На занятии мы c ведущим разработчиком:
- подробно разберем API Dagger2;
- изучим генерируемый код;
- поговорим о best practices использования Dagger2.

После интенсива больше инструментов и навыков ждет вас на *онлайн-курсе «Android Developer. Professional» от OTUS.* Программа рассчитана на разработчиков с опытом создания Android-приложений.

Пройдите вступительный тест и присоединяйтесь!
Регистрация на 1-й день интенсива: https://otus.pw/hrgD/
Регистрация на 2-й день интенсива: https://otus.pw/AsSx/

#партнёрский
835 views13:29
Открыть/Комментировать
2022-08-31 12:05:00 ​​Как переместить View с клавиатурой
#новичкам #android

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

API 30 и выше — можем сделать крутую анимацию для показа клавиатуры, плавно перемещая View в нужную нам позицию.

API 21 – API 29 — View анимируются с небольшой зарежкой, но не так плавно, как в предыдущем варианте. Выглядит чуть похуже, но терпимо.

API 20 и ниже — анимации при показе нет, View сразу перемещается в необходимое место над клавиатурой. К счастью, подобных смартфонов становится всё меньше, и многие приложения повышают минимальный SDK.

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

Кода написать надо совсем немного, при этом вы получите красивое отображение клавиатуры на экране. Больше деталей, примеров и кода лучше взять в этой статье.
1.2K views09:05
Открыть/Комментировать
2022-08-30 11:05:00 ​​Pre-inflated ViewPool для RecyclerView
#android

В сегодняшней статье автор рассказывает о том, как ещё больше оптимизировать RecyclerView, чтобы избежать фризов при непосредственном отображении данных — при помощи PrefetchViewPool.

Проблема кроется в том, что RecyclerView создаёт элементы своего списка непосредственно в момент отображения.
А вся идея заключается в том, чтобы проинициализировать пул для RecyclerView в тот момент, когда сервер получает эти данные.

Для этого как раз и используется PrefetchViewPool. В статье можно почитать детальнее о том, как его применить для конкретной реализации адаптера.

У автора получилось улучшить время отображения RecyclerView с 214.19ms до 118.35ms, что, как мне кажется, весьма достойный результат.
767 views08:05
Открыть/Комментировать
2022-08-22 13:05:00 ​​Important Performance Metrics
#android

Попалась статья, в которой описываются ключевые метрики Android приложений. Особенно полезно изучить её прежде чем начинать оптимизировать своё приложение: как минимум, вы будете понимать, на что стоит потратить свои усилия.

Фазы запуска приложения — важная метрика, которая видна пользователю приложения как только он открывает его. В целом, есть следующие этапы запуска приложения:

cold start — открытие приложения сразу после его установки, полного закрытия, перезапуска системы и т.д. Как раз тут и вызывается Application.onCreate(). По мнению автора, время холодного запуска должно быть меньше 500 миллисекунд, большее время заметно пользователям и может вызвать раздражение.
warm start — измеряется, начиная с Activity.onCreate() перед созданием дерева View. Его можно получить, если сделать поворот экрана, во время которого пересоздаётся Activity, ну или когда система вытесняет ваше приложение из памяти, если оно находится в фоне.
hot start — измеряется, начиная с Activity.onStart(). Его вы получаете, когда переключаетесь между приложениями.

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

Time to Initial Display — это время до отрисовки первого кадра вашего приложения, можно проверить при помощи ActivityTaskManager с тэгом Displayed.

Time to Full Display — время, когда было отрисовано всё необходимое для работы с экраном. Любопытно, что эту метруку можно не только проверить, но и настраивать при помощи reportFullyDrawn() метода Activity.

Frame rates — важная характеристика, которая показывает, насколько плавно работает ваше приложение. Тут есть прямая зависимость от частоты обновления экрана, и автор рекомендует взять за эталон 90 fps: следовательно, у нас есть максимум 1/90 или 11.1 миллисекунд для отрисовки одного кадра.

Больше деталей можно посмотреть в самой статье
1.9K views10:05
Открыть/Комментировать
2022-08-19 10:05:00 ​​Git bisect
#разработка

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

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

И вот на помощь нам приходит отличный, но почему-то не очень распространённый инструмент — git bisect.

Чтобы его использовать необходимо:
1) Открыть консоль git и перейти в папку проекта.
2) Ввести git checkout , где вместо скобок записать коммит, в котором проявилась проблема.
3) Начать процесс поиска при помощи команды git bisect start.
4) Пометить этот коммит плохим при помощи команды git bisect bad.
5) Пометить коммит, где точно нет проблемы при помощи команды git bisect good .
6) Далее повторяете процесс. Каждый раз git будет переключать в нужный коммит между предыдущим хорошим и плохим коммитом при помощи бинарного поиска. Собираете проект и проверяете, проявляется ли проблема. Если да, то вводите git bisect bad, если же нет, то git bisect good.
7) После завершения поиска вводите git bisect reset, чтобы вернуть репозиторий в начальное состояние.

У вас получится найти проблемный коммит за log n шагов, где n — число коммитов между первыми помеченными коммитами.
2.4K views07:05
Открыть/Комментировать
2022-08-17 11:24:53 ​​Релиз Android 13
#android

Как и в последней паре релизов, ближе к концу лета у нас появляется новая, стабильная версия Android, в этот раз — 13.
Скоро ещё больше смартфонов получат новое обновление, а нам, разработчикам, надо обновить targetSdk до 33 версии.

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

Read Media Permission — теперь при использовании android.permission.READEXTERNALSTORAGE вам необходимо описать, к каким типам файлов вы хотите получить доступ. Например, если вам нужны только изображения, то необходимо указать: android.permission.READMEDIAIMAGES.
Но не спешите удалять старый READEXTERNALSTORAGE: ему можно указать android:maxSdkVersion="32", сохранив корректную работу на уже старых версиях Android.

Android 13 Photo Picker — также, для получения изображений и других медиа-объектов, можно воспользоваться PhotoPicker, который вскоре будет работать на Android 11 и выше. Это на случай, если вам не нужно постоянно иметь доступ к галерее пользователя. Довольно удобно.

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

* Google Play Advertising ID* — проверьте, используете ли вы рекламный идентификатор в своём приложении. Кстати, даже если ваше приложение напрямую его не использует, проверьте библиотеки для аналитики, часто именно они запрашивают этот идентификатор.
Если нашли — не забудьте заполнить форму в Google Play, а также добавить разрешение в манифест:
.

и ещё парочку дополнений, таких как корректная окраска сайтов в WebView, оптимизаций батареи, Intent Filter Restrictions и т.д. Классная статья с подробным описанием тут.

В целом, я уже в ближайшее время планирую поднять targetSdk в своих проектах, и миграция пока не выглядит сложной.
2.2K views08:24
Открыть/Комментировать
2022-08-15 11:05:00 ​​Android Manifest placeholders
#android

Уверен, что большинство из вас слышали про то, что такое buildConfigField.
Если нет, то по сути — это возможность объявить переменную внутри build.gradle и её дальнейшее использование внутри приложения.

Правда, вы не можете ссылаться на эту переменную внутри AndroidManifest. Самый типичный кейс — добавление идентификатора приложения для всяких сервисов, типа HMS или GMS. Но тогда на помощь приходит менее распространённый, но весьма крутой инструмент manifestPlaceholders.

Использовать его довольно просто: объявляем переменную через manifestPlaceholders.variable = "testVariable", а дальше получаем ссылку на неё в AndroidManifest при помощи:
android:name="variable_name"
android:value="${testVariable}"/>

Таким образом, мы можем настроить нужное нам поведение хоть на этапе сборки приложения, хоть для отдельного flavor. Берите на заметку.
2.1K views08:05
Открыть/Комментировать
2022-08-10 18:05:00 ​​Chrome Inspect
#android

Совсем недавно узнал о таком инструменте Chrome как chrome://inspect. Возможно, вы, как и я, услышите о нём впервые.

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

Пользоваться им очень просто:

Включаем режим разработчика на смартфоне (кажется, что вы все это сделали).
Ввводим в строку браузера chrome://inspect и подключаемся к телефону.
В целом, на этом всё: мы можем анализировать код, который приходит в нашу WebView, ставить callbacks и анализировать логи.

Радует тот факт, что с нас не требуется установки никаких дополнительных зависимостей, ведь использовать его мы будем не очень часто.
3.0K views15:05
Открыть/Комментировать
2022-08-09 11:05:00 ​​Как ViewModel переживает configuration changes?
#android

Полезная статья, которая даёт базовое представление о том, как ViewModel переживает состояние при повороте экрана.

Кстати, вопросы о том, как заставить ViewModel пережить своё состояние (или же ваш кастомный класс) частенько попадаются на собеседованиях.

Да и в целом, полезно знать, какая "магия" происходит под капотом и для чего нужен ViewModelStore .
2.8K viewsedited  08:05
Открыть/Комментировать
2022-08-04 13:05:00 ​​OnBackPressed Deprecated и что использовать вместо него
#android

Если сейчас выставить targetSdk 33, то можно увидеть то, что OnBackPressed() метод в Activity — deprecated.

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

Что использовать вместо onBackPressed?
Рекомендуется перейти на onBackPressedDispatcher, который надо будет зарегистрировать в Activity вместе с OnBackPressedCallback.

Вероятно, с Android 13 у пользователя немного поменяется навигация при помощи жестов, чтобы более корректно распознавать те жесты, которые он использовал.

Чуть больше деталей и пример кода можно найти тут
4.1K views10:05
Открыть/Комментировать