#StrcitMode #Performance
StrictModeCompat Library
Я реализовал библиотеку StrictModeCompat для удобной работы с StrictMode на всех версиях Android. Она позволяет безопасно вызывать любой метод аналогично тому, как это сделано в AndroidX. В статье ниже вы найдете описание проблемы и как подключить библиотеку к вашему проекту.
StrictModeCompat Library
Я реализовал библиотеку StrictModeCompat для удобной работы с StrictMode на всех версиях Android. Она позволяет безопасно вызывать любой метод аналогично тому, как это сделано в AndroidX. В статье ниже вы найдете описание проблемы и как подключить библиотеку к вашему проекту.
Medium
StrictModeCompat Library
Init StrcitMode safely on any Android version
👍1
#Material #Design #BottomSheet
Hands-on with Material Components for Android: Bottom Sheet
Третья статья из серии о компонентах Material Design и как их использовать в Android. В текущей рассматривается Bottom Sheet:
👉 Виды Bottom Sheet
👉 Базисы использования
👉 BottomSheetBehavior
👉 Состояния Bottom Sheet и как его сохранить
👉 Оповещение об изменение состояния
👉 Кастомизация
Hands-on with Material Components for Android: Bottom Sheet
Третья статья из серии о компонентах Material Design и как их использовать в Android. В текущей рассматривается Bottom Sheet:
👉 Виды Bottom Sheet
👉 Базисы использования
👉 BottomSheetBehavior
👉 Состояния Bottom Sheet и как его сохранить
👉 Оповещение об изменение состояния
👉 Кастомизация
Medium
Hands-on with Material Components for Android: Bottom Sheets
Part 3 of a series covering practical usage of Material Components for Android
👍1
#Rx #Library #RxJava
Rxify: Retry with Exponential Backoff in RxJava
Библиотека для всех любителей RxJava, которая позволяет повторять выполнение Observable, при появление ошибке с экспоненциальным таймаутом повторения.
Rxify Github Repo
Rxify: Retry with Exponential Backoff in RxJava
Библиотека для всех любителей RxJava, которая позволяет повторять выполнение Observable, при появление ошибке с экспоненциальным таймаутом повторения.
Rxify Github Repo
Medium
Rxify: Exponential Backoff on retry
Whenever we think of retrying there are quite a few options available to us. Create a custom solution with recursion perhaps or maybe an…
👍1
#Vector #Drawable #
Alex Lockwood - Vector workflows | Øredev 2018
Запись доклада о векторной графики в Android: устройство, ограничения, крутые фичи и пр.
Alex Lockwood - Vector workflows | Øredev 2018
Запись доклада о векторной графики в Android: устройство, ограничения, крутые фичи и пр.
Vimeo
Alex Lockwood - Vector workflows | Øredev 2018
Vector assets are lightweight and sharp on every screen size, but working with them can be complicated. Android doesn’t directly support SVG, potentially leading…
👍1
#Marbel #Emulator
Android Emulator : Project Marble Improvements
Project Marble шагает по инструментарию разработчиков. Настала очередь рассказа изменений в эмуляторе. Разработчики жаловались на то, что Android эмулятор потребляет много системных ресурсов. Googleры решили уменьшить потребление CPU ресурсов. Результаты этой работы можно посмотреть в Android Emulator 28.1, который доступен в Canary канале.
Что именно было сделано:
1️⃣ Теперь устройства в эмуляторе по умолчанию работают от батареи (а не от зарядки). Это связано с тем, что большая часть сервисов оптимизирована для экономного расхода заряда батареи. Эти оптимизации работают только если устройство не заряжается.
2️⃣ Возможность поставить эмулятор на паузу. Это позволяет уменьшить расход ресурсов, когда вы не используете эмулятор, например во время правок кода. Используйте
3️⃣ Снижение затрат на отрисовку. Теперь отрисовка стала эффективнее (график приведен ниже) и повышена частота кадров
4️⃣ Оптимизация IO операций на macOS. Это позволило здорово сократить нагрузку на CPU c ~10% до ~3%
5️⃣ Headless Build (запуск эмулятора без UI). Это функция пригодится тем кто использует эмуляторы на CI или вам не нужно тестировать UI. Она позволяет сократить потребление RAM на 100 Mb
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
#AOSP
AOSP Application Updates
Чистка референсных приложений в 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)б
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
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).
Using FFmpeg for faster audio decoding
Статья о том как использовать FFmpeg на Android. По сравнению со стандартными доступными средствами в Android NDK, FFmpeg позволяет повысить скорость обработки аудио в 10 раз (протестировано на Google Pixel XL).
Medium
Using FFmpeg for faster audio decoding
Building and packaging FFmpeg for Android
👍1
#MobilePeople #Podcast #GoogleIO #EPAM
EPAM активно поддерживает около ITшные сообщества разработчиков по разным направлениям. Одно из таких сообществ - Mobile People. В рамках этой инициативы зародился подкаст Mobile People Talks - подкаст про мобильную разработку с взглядами из различным направлений.
Я очень рад что смог стать частью этого (спасибо Данису Тазетдинову за приглашение).
В первом выпуске мы обсудили предстоящий Google I/O: Android Q, куда все движется, чего каждый из нас ждет и как всегда похоливарили 😁
EPAM активно поддерживает около ITшные сообщества разработчиков по разным направлениям. Одно из таких сообществ - Mobile People. В рамках этой инициативы зародился подкаст Mobile People Talks - подкаст про мобильную разработку с взглядами из различным направлений.
Я очень рад что смог стать частью этого (спасибо Данису Тазетдинову за приглашение).
В первом выпуске мы обсудили предстоящий Google I/O: Android Q, куда все движется, чего каждый из нас ждет и как всегда похоливарили 😁
👍1
Какую библиотеку для загрузки изображений используете вы в своих последних приложениях?
Final Results
80%
Glide (bumptech.github.io/glide/)
11%
Picasso (square.github.io/picasso)
2%
Universal Image Loader (github.com/nostra13/Android-Universal-Image-Loader)
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, которая будет очищать старый кэш.
Best strategy to load images using Glide
Glide - это довольно популярное решение для загрузки изображений. Я использую именно за его широкие возможности, поддержку добавления загрузки и кэширования собственных типов данных и широкие возможности по пост обработки изображения перед показом картинки пользователю.
В статье выше нашел пару интересных моментов по использованию Glide:
👉 Добавляйте url превью картинки более мелкого размера (thumbnail), это позволит показать результат пользователю быстрее но в более низком качестве
👉 Выполняйте периодическую очистку кэша. Например, можно создать периодическую Work, использую WorkManager, которая будет очищать старый кэш.
Medium
Best strategy to load images using Glide — Image loading library for Android
Glide is an Image Loader Library for Android developed by bumptech and is a library that is recommended by Google. It has been used in…
👍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 метадата
👉 Структура профилей
Improving app performance with ART optimizing profiles in the cloud
В Android 9.0 Pie была запущены оптимизирующие профили ART в Play Cloud, которое позволило ускорить запуск приложения в среднем около 15% без необходимости какой-либо оптимизации со стороны разработчиков приложений.
В статье подробно освещается механизм работы эту функции:
👉 Сбор информации для профилей
👉 DEX метадата
👉 Структура профилей
Android Developers Blog
Improving app performance with ART optimizing profiles in the cloud
Posted by Calin Juravle, Software Engineer In Android Pie we launched ART optimizing profiles in Play Cloud , a new optimization feat...
👍1
#Dagger #DependencyInjection #Square
Dagger Assisted Injection
Для всех те кто решал проблему Dagger 2 с передачей параметров в зависимости, Square сделали толковое решение - Assisted Inject, которое позволяет избавиться от создания дополнительных компонентов или не задавать зависимости через setter-ы после их создания.
Рассмотрим пример:
Параметры
Следующим шагом нам нужна фабрика для создания нашей зависимости:
Фабрика позволит нам создавать зависимости, передавая туда необходимые параметры.
Библиотека сейчас находится в версии 0.3.3, но работает без проблем, проверено личной мной на production проекте.
Все подробности полной реализации вы можете найти в статье.
Gtihub Assisted Inject
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