Android Broadcast – Telegram
Android Broadcast
14.4K subscribers
3.68K photos
368 videos
11 files
6.1K links
Подборка новостей и статей для Android разработчиков.

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

РКН https://abdev.by/rkn_tg_ab #MQRZR
Download Telegram
#StrcitMode #Performance

StrictModeCompat Library

Я реализовал библиотеку StrictModeCompat для удобной работы с StrictMode на всех версиях Android. Она позволяет безопасно вызывать любой метод аналогично тому, как это сделано в AndroidX. В статье ниже вы найдете описание проблемы и как подключить библиотеку к вашему проекту.
👍1
#Material #Design #BottomSheet

Hands-on with Material Components for Android: Bottom Sheet

Третья статья из серии о компонентах Material Design и как их использовать в Android. В текущей рассматривается Bottom Sheet:
👉 Виды Bottom Sheet
👉 Базисы использования
👉 BottomSheetBehavior
👉 Состояния Bottom Sheet и как его сохранить
👉 Оповещение об изменение состояния
👉 Кастомизация
👍1
#Rx #Library #RxJava

Rxify: Retry with Exponential Backoff in RxJava

Библиотека для всех любителей RxJava, которая позволяет повторять выполнение Observable, при появление ошибке с экспоненциальным таймаутом повторения.

Rxify Github Repo
👍1
#Marbel #Emulator

Android Emulator : Project Marble Improvements

Project Marble шагает по инструментарию разработчиков. Настала очередь рассказа изменений в эмуляторе. Разработчики жаловались на то, что Android эмулятор потребляет много системных ресурсов. Googleры решили уменьшить потребление CPU ресурсов. Результаты этой работы можно посмотреть в Android Emulator 28.1, который доступен в Canary канале.

Что именно было сделано:
1️⃣ Теперь устройства в эмуляторе по умолчанию работают от батареи (а не от зарядки). Это связано с тем, что большая часть сервисов оптимизирована для экономного расхода заряда батареи. Эти оптимизации работают только если устройство не заряжается.
2️⃣ Возможность поставить эмулятор на паузу. Это позволяет уменьшить расход ресурсов, когда вы не используете эмулятор, например во время правок кода. Используйте adb emu avd pause/resume для теста.
3️⃣ Снижение затрат на отрисовку. Теперь отрисовка стала эффективнее (график приведен ниже) и повышена частота кадров
4️⃣ Оптимизация IO операций на macOS. Это позволило здорово сократить нагрузку на CPU c ~10% до ~3%
5️⃣ Headless Build (запуск эмулятора без UI). Это функция пригодится тем кто использует эмуляторы на CI или вам не нужно тестировать UI. Она позволяет сократить потребление RAM на 100 Mb
👍2
Использование CPU эмулятором с автообновлением приложений и без
👍1
OpenGL ES FPS тест на эмуляторах 28.0.23 и 28.1.10
👍1
Сравнение использования CPU на macOS в эмуляторах 28.0.23 и 28.1.10
👍1
Сравнения потребления памяти обычным и headless эмулятором
👍1
#AOSP

AOSP Application Updates

Чистка референсных приложений в AOSP. Упрощены музыкальный плеер, календарь и калькулятор и теперь они выполняют самый простейший функционал, например мызукалтный плеер поддерживает только проигрывание одного трека. Причина проста - оно не поддерживаются, функции их не соответствуют современным требованиям. В будущем чистка может задеть и другие приложения.
👍1
#GoogleIO

Google I/O 2019 schedule was released

Опубликовано расписание сессий на предстоящем Google I/O. Исходя из его анализа можно понять что нас ждет:
🔥библиотека AndroidX.Camera, которая решит проблемы с особенностями работы на особенностях реализации на устройствах разных производителей
🔥подробности темной темы в Android Q
🔥библиотека для бенчмарков в AndroidX
🔥релиз Constraint Layout 2.0 и Motion Layout
🔥обновления в Arch Components
🔥Что было сделано в рамках Project Marbel - обещанной оптимизации работы инструментов разработчика и устранению багов

ВАЖНО: информация неточная и построена на моих предположениях из описания докладов.

К сожалению, пока в расписании не видно докладов о Fuchsia OS (может они появятся на сайте после громких анонсов на Keynote)б
👍1
Интересные доклады по моему мнению следующие:

What's New in Android

Android:
👉 Understanding Android Runtime (ART) for Faster Apps
👉 Best Practices for Using Sign-In for Android Apps
👉 Security on Android: What's Next
👉 What's New in the Android OS User Interface
👉 Moving Away from the Light with Android Q
👉 Best Practices for Using Text in Android
👉 Demystifying Android Accessibility Development
👉 Improve Digital Wellbeing: Google's Approach and Tips for Developers
👉 Extend Your Android App to the Google Assistant

Android Jetpack:
👉 Android Jetpack: What's New in Navigation
👉 Android Jetpack: Understand the CameraX Camera-Support Library
👉 What's New in Architecture Components
👉 What's New with ConstaintLayout
👉 Improving App Performance with Benchmarking

Architecture:
👉 Build a Modular Android App Architecture
👉 Build Apps for Foldable, Multi-Display, and Large-Screen Devices
👉 Build Testable Apps for Android
👉 Build Apps for the Next Billion Users

Tools:
👉 Best Practices in Using the Android Emulator
👉 What's New in Android Studio UI Design and Debugging Tools
👉 What's New in the Android Studio Build System
👉 Android Studio: Tips and Tricks
👉 Build Bigger, Better: Gradle for Large Projects

Design:
👉 Material Theming: Build Expressively with Material Components
👉 How Material Design Can Be Adopted and Measured for Product Success
👉 How to Design a Dark Theme Using Material

Google Play:
👉 What's New in Google Play
👉 What's New with Google Play Billing
👉 What's Next for Your App Bundle: Customizable App and Games Delivery
👉 Best Practices in Boosting Optimized App Installs on Google Play
👉 Improve Your App and Game Quality with Android Vitals

Kotlin:
👉 Understand Kotlin Coroutines on Android
👉 What's New in Kotlin on Android
👉 Kotlin on Android: Understand the Internals

Firebase:
👉 What's New in Firebase
👉 Cloud Firestore Data Modeling
👉 Engage and Keep Your Users in Your App with Firebase
👉 ML Kit: Machine Learning for Mobile with Firebase

Machine Learning:
👉 What’s New in Android Machine Learning
👉 ML Kit x Material Design: Design Patterns for Mobile Machine Learning
👉 Introducing Google Coral: Building On-Device AI
👉 AI for Mobile and IoT Devices: TensorFlow Lite
👉 Machine Learning on Your Device: The Options
👍1
#FFmpeg #Audio #Performance

Using FFmpeg for faster audio decoding

Статья о том как использовать FFmpeg на Android. По сравнению со стандартными доступными средствами в Android NDK, FFmpeg позволяет повысить скорость обработки аудио в 10 раз (протестировано на Google Pixel XL).
👍1
#MobilePeople #Podcast #GoogleIO #EPAM

EPAM активно поддерживает около ITшные сообщества разработчиков по разным направлениям. Одно из таких сообществ - Mobile People. В рамках этой инициативы зародился подкаст Mobile People Talks - подкаст про мобильную разработку с взглядами из различным направлений.

Я очень рад что смог стать частью этого (спасибо Данису Тазетдинову за приглашение).

В первом выпуске мы обсудили предстоящий Google I/O: Android Q, куда все движется, чего каждый из нас ждет и как всегда похоливарили 😁
👍1
Какую библиотеку для загрузки изображений используете вы в своих последних приложениях?
Final Results
11%
0%
Facebook Fresco (frescolib.org)
0%
Другая библиотека
2%
Androiв SDK only
6%
Не работаю с изображениями
👍1
#Glide #Image #Cache

Best strategy to load images using Glide

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

В статье выше нашел пару интересных моментов по использованию Glide:
👉 Добавляйте url превью картинки более мелкого размера (thumbnail), это позволит показать результат пользователю быстрее но в более низком качестве
👉 Выполняйте периодическую очистку кэша. Например, можно создать периодическую Work, использую WorkManager, которая будет очищать старый кэш.
👍1
Android Broadcast
Какую библиотеку для загрузки изображений используете вы в своих последних приложениях?
По итогам опроса о популярности библиотеки для загрузки изображений победителем стал Glide 🎉🎉🎉
👍1
#ART #Performance

Improving app performance with ART optimizing profiles in the cloud

В Android 9.0 Pie была запущены оптимизирующие профили ART в Play Cloud, которое позволило ускорить запуск приложения в среднем около 15% без необходимости какой-либо оптимизации со стороны разработчиков приложений.

В статье подробно освещается механизм работы эту функции:
👉 Сбор информации для профилей
👉 DEX метадата
👉 Структура профилей
👍1
#Dagger #DependencyInjection #Square

Dagger Assisted Injection

Для всех те кто решал проблему Dagger 2 с передачей параметров в зависимости, Square сделали толковое решение - Assisted Inject, которое позволяет избавиться от создания дополнительных компонентов или не задавать зависимости через setter-ы после их создания.

Рассмотрим пример:
class TextPresenter
@AssistedInject constructor(
@Assisted val view: TextView,
@Assisted val text: String,
val textDecorator: TextDecorator
)

Параметры view и text не находятся в графе зависимостей и поэтому мы не можем получить оттуда, и мы помечаем их с помощью @Assisted, что говорит о том что они будут задаваться динамически.

Следующим шагом нам нужна фабрика для создания нашей зависимости:
class TextPresenter {
@AssistedInject.Factory interface Factory {
fun create(
view: TextView,
text: String
): TextPresenter
}
}

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

Библиотека сейчас находится в версии 0.3.3, но работает без проблем, проверено личной мной на production проекте.

Все подробности полной реализации вы можете найти в статье.

Gtihub Assisted Inject
👍1
Считаете ли Вы, что Android разработчик должен пользоваться Android устройством, чтобы понимать платформу как пользователь?
Final Results
56%
Однозначно использовать Android!
27%
Android, iOS, да хоть Windows Phone, всё равно
17%
Хочу увидеть результаты
👍1