#RxJava #Backpressure
Анатомия backpressure в реактивных потоках
Backpressure - один из важных элементов реактивной парадигмы и может казаться что это довольно сложный механизм, но автор статьи рассказывает о том как "под капотом" устроен этот механизм и что, фактически, реализовать его можно довольно быстро.
В качестве примере автор приводит код, в котором он описал упрощённый механизм backpressure при помощи обычного семафора.
Анатомия backpressure в реактивных потоках
Backpressure - один из важных элементов реактивной парадигмы и может казаться что это довольно сложный механизм, но автор статьи рассказывает о том как "под капотом" устроен этот механизм и что, фактически, реализовать его можно довольно быстро.
В качестве примере автор приводит код, в котором он описал упрощённый механизм backpressure при помощи обычного семафора.
Хабр
Анатомия backpressure в реактивных потоках
Читая многочисленные статьи по теме реактивных потоков, читатель может прийти к выводу, что: backpressure это круто backpressure доступно только в библиотеках,...
This media is not supported in your browser
VIEW IN TELEGRAM
#Kotlin #Kotlin1_4
Вышел Kotlin 1.4
Вышел долгожданный релиз новой мажорной версии любимого языка Android разработки. Релиз сконцентрировался на производительности и качестве, а также инструментарии.
Давайте конкретнее:
👉 Скорость подсветки синтаксиса выросла от 1.5 до 4 раз, как и автодополнение
👉 Отладчик Coroutine
👉 Обновленный мастер для создания Kotlin проектов
👉 Обновленный компилятор
👉 Новая система вывода типов (Type Inference)
👉 SAM для Kotlin интерфейсов
👉 Улучшения стандартной библиотеки
👉 Explicit режим для авторов библиотек, который заставляет явно указывать модификаторы доступа и др. важные для библиотек вещи
👉 Возможность использовать именованные и позиционные аргументы
👉 В конце параметров теперь можно ставить запятую
👉 Теперь можно использовать
👉 Улучшения в Kotlin Multiplatform
Также добавили всего много нового экспериментального
Вышел Kotlin 1.4
Вышел долгожданный релиз новой мажорной версии любимого языка Android разработки. Релиз сконцентрировался на производительности и качестве, а также инструментарии.
Давайте конкретнее:
👉 Скорость подсветки синтаксиса выросла от 1.5 до 4 раз, как и автодополнение
👉 Отладчик Coroutine
👉 Обновленный мастер для создания Kotlin проектов
👉 Обновленный компилятор
👉 Новая система вывода типов (Type Inference)
👉 SAM для Kotlin интерфейсов
👉 Улучшения стандартной библиотеки
👉 Explicit режим для авторов библиотек, который заставляет явно указывать модификаторы доступа и др. важные для библиотек вещи
👉 Возможность использовать именованные и позиционные аргументы
👉 В конце параметров теперь можно ставить запятую
👉 Теперь можно использовать
break
и continue
внутри when
выражений, который находятся в циклах👉 Улучшения в Kotlin Multiplatform
Также добавили всего много нового экспериментального
#BestPractice
Android Development | Best Practices
Большая статья от разработчика с более чем пятилетним опытом в Android разработке, которая содержит 25 советов и рекомендаций, для того чтобы улучшить и оптимизировать ваше приложение. Среди рекомендаций:
👉 Выбор архитектуры и Build Type'ов
👉 Рекомендации по работе с изображениями и layout'ами
👉 Много советов по безопасности приложения
👉 Оптимизация Gradle
К какому пункту автор даёт пояснение и полезные ссылки.
Android Development | Best Practices
Большая статья от разработчика с более чем пятилетним опытом в Android разработке, которая содержит 25 советов и рекомендаций, для того чтобы улучшить и оптимизировать ваше приложение. Среди рекомендаций:
👉 Выбор архитектуры и Build Type'ов
👉 Рекомендации по работе с изображениями и layout'ами
👉 Много советов по безопасности приложения
👉 Оптимизация Gradle
К какому пункту автор даёт пояснение и полезные ссылки.
Medium
Android Development | Best Practices
Android development is all the hype these days as it continues to dominate the world of mobile development. Fun projects, great pay, and…
#Notifrications #Kotlin #DSL
Android Notifications DSL 0.1.0
Push уведомления в приложениях - один из важнейших функционалов, который позволяет нам получать информацию без входа в приложение, а разработчикам заманивать к себе пользователей в приложение.
Удобство создания Notification в Android SDK хромает:
👉 Множество Builder-ов
👉 Фрагментированность возможностей уведомлений на разных версиях Android
👉 Непонятно какие параметры надо явно задавать, чтобы получить необходимый тип уведомлений
👉 Отсутствие Compat API для NotificationChannel
👉 Как хорошо реализовать альтернативный вариант для старой версии Android, а для новой показывать более функциональный?
Все это заставило задуматься о создании библиотеки Android Notification DSL, которая позволит избавиться от этих недостатков. Библиотека опирается на возможности NotificationCompat и Notification из Android SDK
Разработчику библиотеки @krlrozov очень важна ваша обратная связь. Пишите в личку или давайте обсуждать в @android_broadcast_talks
Android Notifications DSL 0.1.0
Push уведомления в приложениях - один из важнейших функционалов, который позволяет нам получать информацию без входа в приложение, а разработчикам заманивать к себе пользователей в приложение.
Удобство создания Notification в Android SDK хромает:
👉 Множество Builder-ов
👉 Фрагментированность возможностей уведомлений на разных версиях Android
👉 Непонятно какие параметры надо явно задавать, чтобы получить необходимый тип уведомлений
👉 Отсутствие Compat API для NotificationChannel
👉 Как хорошо реализовать альтернативный вариант для старой версии Android, а для новой показывать более функциональный?
Все это заставило задуматься о создании библиотеки Android Notification DSL, которая позволит избавиться от этих недостатков. Библиотека опирается на возможности NotificationCompat и Notification из Android SDK
Разработчику библиотеки @krlrozov очень важна ваша обратная связь. Пишите в личку или давайте обсуждать в @android_broadcast_talks
#Kotlin #DateTime
Первый релиз Kotlinx DateTime - 0.1.0
Уже давно обсуждали чего стоит ждать и вот с выходом Kotlin 1.4 мы получаем первую версию мультиплатформенной Kotlin официальной библиотеки для работы с датами.
У библиотеки нет цели покрыть любые возможности для работы с датой, а только основные и самые распространенные, которые хватит большинству обычных разработчиков.
Библиотека включает в себя классы:
👉 Instant
👉 Clock
👉 LocalDateTime
👉 LocalDate
👉 TimeZone и ZoneOffset
👉 Month и DayOfWeek
👉 DateTimePeriod
👉 DatePeriod
👉 DateTimeUnit
В репозитории вы найдете больше подробностей и примеры использования нового API
Первый релиз Kotlinx DateTime - 0.1.0
Уже давно обсуждали чего стоит ждать и вот с выходом Kotlin 1.4 мы получаем первую версию мультиплатформенной Kotlin официальной библиотеки для работы с датами.
У библиотеки нет цели покрыть любые возможности для работы с датой, а только основные и самые распространенные, которые хватит большинству обычных разработчиков.
Библиотека включает в себя классы:
👉 Instant
👉 Clock
👉 LocalDateTime
👉 LocalDate
👉 TimeZone и ZoneOffset
👉 Month и DayOfWeek
👉 DateTimePeriod
👉 DatePeriod
👉 DateTimeUnit
В репозитории вы найдете больше подробностей и примеры использования нового API
GitHub
GitHub - Kotlin/kotlinx-datetime: KotlinX multiplatform date/time library
KotlinX multiplatform date/time library. Contribute to Kotlin/kotlinx-datetime development by creating an account on GitHub.
#Kotlin #Serialization
Вышла KotlinX Serialization 1.0.0-RC
Официальная библиотека сериализации от разработчиков Kotlin подходит к релизу и нас ждут изменения
👉 Миграция на Kotlin 1.4
👉 Изменение и стабилизация API
👉 Исправление багов
👉 Улучшение производительности
Вышла KotlinX Serialization 1.0.0-RC
Официальная библиотека сериализации от разработчиков Kotlin подходит к релизу и нас ждут изменения
👉 Миграция на Kotlin 1.4
👉 Изменение и стабилизация API
👉 Исправление багов
👉 Улучшение производительности
GitHub
Release 1.0.0-RC · Kotlin/kotlinx.serialization
Release candidate for 1.0.0 version. The goal of RC release is to collect feedback from users
and provide 1.0.0 release with bug fixes and improvements based on that feedback.
While working on 1.0....
and provide 1.0.0 release with bug fixes and improvements based on that feedback.
While working on 1.0....
#Tooling #Performance
Yet Another Methods Profiler for Android (YAMP)
Утилита для анализа
Такого рода инструмент позволяет понять какие методы у вас вызывались и где было потрачено много времени, чтобы расследовать проблемы в производительности.
Скачать последний релиз можно ➡️здесь
Подробное руководство найдете в README на Github
Задать свои вопросы автору @Grishberg вы можете в чате @android_broadcast_talks
Yet Another Methods Profiler for Android (YAMP)
Утилита для анализа
.trace
файлов, аналогичная Android Profiler, но скорость работы выше и управление удобнее.Такого рода инструмент позволяет понять какие методы у вас вызывались и где было потрачено много времени, чтобы расследовать проблемы в производительности.
Скачать последний релиз можно ➡️здесь
Подробное руководство найдете в README на Github
Задать свои вопросы автору @Grishberg вы можете в чате @android_broadcast_talks
GitHub
GitHub - Grigory-Rylov/android-methods-profiler: Yet another Android Profiler for AOSP .trace files
Yet another Android Profiler for AOSP .trace files - Grigory-Rylov/android-methods-profiler
#Conferenсe #Online
2020 год получился очень насыщенным на события. Но впереди еще осень, а это значит, что конференционный сезон в самом разгаре! Вопреки всему, уже 11-14 ноября пройдет Mobius 2020 Moscow. И снова в онлайне!
После летней онлайн-конференции ребята получили много разнообразных отзывов, и теперь усиленно работают над опытом онлайн-спикеров, пытаясь обеспечить обратную связь с аудиторией, живое общение с экспертами в рамках выступления, и даже планируют сделать почти все доклады парными!
Программный комитет конференции постарается найти содокладчика или эксперта, который поддержит темп доклада и поможет вовлечь аудиторию в диалог, чтобы у вас не было впечатления «разговора с монитором».
Если вы еще думаете, стоит ли участвовать - вот вам знак 🙂 Переходите по ссылке, заполняйте форму подачи заявки на доклад и становитесь спикером Mobius 2020 Moscow. Стоит поспешить, приём заявок открыт до 31 августа!
По всем вопросам можно писать @OksanaMiroshnichenko
2020 год получился очень насыщенным на события. Но впереди еще осень, а это значит, что конференционный сезон в самом разгаре! Вопреки всему, уже 11-14 ноября пройдет Mobius 2020 Moscow. И снова в онлайне!
После летней онлайн-конференции ребята получили много разнообразных отзывов, и теперь усиленно работают над опытом онлайн-спикеров, пытаясь обеспечить обратную связь с аудиторией, живое общение с экспертами в рамках выступления, и даже планируют сделать почти все доклады парными!
Программный комитет конференции постарается найти содокладчика или эксперта, который поддержит темп доклада и поможет вовлечь аудиторию в диалог, чтобы у вас не было впечатления «разговора с монитором».
Если вы еще думаете, стоит ли участвовать - вот вам знак 🙂 Переходите по ссылке, заполняйте форму подачи заявки на доклад и становитесь спикером Mobius 2020 Moscow. Стоит поспешить, приём заявок открыт до 31 августа!
По всем вопросам можно писать @OksanaMiroshnichenko
#Fragment
Fragments: Rebuilding the Internals
В релизе Fragment 1.3.0-alpha08 произошел рефакторинг Fragment под капотом. Одна из новинок - FragmentStateManager, в который было выделено много логики из
FragmentStateManager отвечает за:
👉 Переход Fragment между методами его жизненного цикла
👉 Запуск анимаций
👉 Выполнение отложенных транзакций
Благодаря этому рефакторингу:
👉 было закрыто более 10 багов долгожителей в Fragment
👉 дало дорогу поддержки множеству back stack-ов в рамках одного FragmentManager
👉 Заложена основа для упрощения жизненного цикла Fragment
Fragments: Rebuilding the Internals
В релизе Fragment 1.3.0-alpha08 произошел рефакторинг Fragment под капотом. Одна из новинок - FragmentStateManager, в который было выделено много логики из
Fragment
.FragmentStateManager отвечает за:
👉 Переход Fragment между методами его жизненного цикла
👉 Запуск анимаций
👉 Выполнение отложенных транзакций
Благодаря этому рефакторингу:
👉 было закрыто более 10 багов долгожителей в Fragment
👉 дало дорогу поддержки множеству back stack-ов в рамках одного FragmentManager
👉 Заложена основа для упрощения жизненного цикла Fragment
Medium
Fragments: rebuilding the internals
Introducing: the new state manager
#Jetpack
Обновление Jetpack 19.08.2020
👉 Concurrent 1.1.0: поддержка ListenableFuture и Kotlin Coroutines
👉 Webkit 1.3.0: улучшения в работе с темной темой и возможность проверки работает ли WebView в отдельном процессе
👉 Fragment 1.3.0-alpha08: переписана работа с состоянием Fragment, что позволило закрыть множество старых багов
👉 AppCompat 1.3.0-alpha02: заменили растровую графику векторной, WindowInsetsCompat стало использовать Android 11 API
👉 Biometric 1.1.0-alpha02: портированы API из Android 11, исправление багов и утечек памяти
👉 Core 1.5.0-alpha02: новые API для
👉 Множество новых beta релизов
Обновление Jetpack 19.08.2020
👉 Concurrent 1.1.0: поддержка ListenableFuture и Kotlin Coroutines
👉 Webkit 1.3.0: улучшения в работе с темной темой и возможность проверки работает ли WebView в отдельном процессе
👉 Fragment 1.3.0-alpha08: переписана работа с состоянием Fragment, что позволило закрыть множество старых багов
👉 AppCompat 1.3.0-alpha02: заменили растровую графику векторной, WindowInsetsCompat стало использовать Android 11 API
👉 Biometric 1.1.0-alpha02: портированы API из Android 11, исправление багов и утечек памяти
👉 Core 1.5.0-alpha02: новые API для
NotificationCompat
и WindowInsetsCompat
👉 Множество новых beta релизов
#Jetpack #Security
Новая библиотека Security Identity Credential
Библиотека предоставляет бэкпорт нового API из Android 11 и использовать его, начиная с API 24 ( Android 7.0)
Новая библиотека Security Identity Credential
Библиотека предоставляет бэкпорт нового API из Android 11 и использовать его, начиная с API 24 ( Android 7.0)
#GooglePlay
Google Play In-App Review API: integration and experience
В последней версии библиотеки Google Play Core появилась возможность оставлять отзывы на приложения напрямую из приложения без необходимости открытия Google Play.
В статье рассматривается опыт интеграции этой возможности и тестирование этой возможности. Как результат рост количества отзывов в 5 раз!
Google Play In-App Review API: integration and experience
В последней версии библиотеки Google Play Core появилась возможность оставлять отзывы на приложения напрямую из приложения без необходимости открытия Google Play.
В статье рассматривается опыт интеграции этой возможности и тестирование этой возможности. Как результат рост количества отзывов в 5 раз!
Medium
Google Play In-App Review API: integration and experience
Google Play Core library version 1.8.0 brings a long-awaited feature: native in-app review dialog. I added it to the latest version of…
#Test
Автотесты на Android. Картина целиком
Как выстроить автотесты в вашем проекте? Это тяжело? В команде Avokado так не считают и в статье отвечают на ряд вопросов:
👉 Зачем нужны автотесты?
👉 Процесс написания тестов
👉 Инструменты
👉 Где запускать тесты?
👉 Инфраструктура
Автотесты на Android. Картина целиком
Как выстроить автотесты в вашем проекте? Это тяжело? В команде Avokado так не считают и в статье отвечают на ряд вопросов:
👉 Зачем нужны автотесты?
👉 Процесс написания тестов
👉 Инструменты
👉 Где запускать тесты?
👉 Инфраструктура
Хабр
Автотесты на Android. Картина целиком
Всем привет! Автотесты под Android — это непросто. Чтобы выстроить процесс автотестирования, надо запланировать и решить множество задач. Но самая большая беда заключается в том, что нигде нет полного...
#Design #Material
Android Design System and Theming: Typography
Подробный разбор работы со шрифтами в Material Design на Android:
👉 Ресурсы шрифтов
👉 Стандартные стили
👉 Система шрифтов Material Design
👉 Темы и стили для текста в Android
Android Design System and Theming: Typography
Подробный разбор работы со шрифтами в Material Design на Android:
👉 Ресурсы шрифтов
👉 Стандартные стили
👉 Система шрифтов Material Design
👉 Темы и стили для текста в Android
Medium
Android Design System and Theming: Typography
Android Design System and Android Theming can help us to have a simple, powerful, and easy to maintain application theme.
#RecyclerView
RecyclerView.ItemDecoration: используем по максимуму
RecyclerView есть в любом нативном Android приложении. В статье делятся опытом применения
RecyclerView.ItemDecoration: используем по максимуму
RecyclerView есть в любом нативном Android приложении. В статье делятся опытом применения
ItemDecoration
. С помощью этого класса можно решить много задач интересным образом и более эффективно чем через ViewХабр
RecyclerView.ItemDecoration: используем по максимуму
Привет, дорогой читатель Хабра. Меня зовут Олег Жило, последние 4 года я Android-разработчик в Surf . За это время я поучаствовал в разного рода крутых проектах, но и с легаси-кодом поработать...
#RxJava
RxRelay – это магия? Subject vs RxRelay
Для всех кому нравится работать с Rxjava и приходится это делать (Coroutine победят!). Альтернатива Subject - RxRelay. В статье происходит разбор решения и их отличия
RxRelay – это магия? Subject vs RxRelay
Для всех кому нравится работать с Rxjava и приходится это делать (Coroutine победят!). Альтернатива Subject - RxRelay. В статье происходит разбор решения и их отличия
Хабр
RxRelay – это магия? Subject vs RxRelay
В Android-комьюнити я встречал три типа разработчиков, которые сталкивались с RxRelay: Те, кто не понимают зачем RxRelay используется в их проекте, зачем он...
#Performance
Assets or Resource Raw folder of Android?
В Android есть возможность 2 образами положить произвольные файлы - aasets и raw ресурсы. Что выбрать? Что быстрее? Что займёт меньше места в APK?
В статье найдёте сравнение
Assets or Resource Raw folder of Android?
В Android есть возможность 2 образами положить произвольные файлы - aasets и raw ресурсы. Что выбрать? Что быстрее? Что займёт меньше места в APK?
В статье найдёте сравнение
Medium
Assets or Resource Raw folder of Android?
Guide to put your raw asset in the right location
#Firebase #Analytics
New API for manually tracking screen views in Google Analytics
В Firebase Analytics появилась возможность вручную трекать показы экраны на Android и iOS. Событие
Когда это может пригодиться:
👉 Отправка события когда пользователь провел какое-то время на экране (не было случайного входа на экран)
👉 Экраны в вашем приложении, которые автоматическая статистика понять не могла, например дочерние View или Fragment
Старое API setCurrentScreen стало deprecated и надо с него уходить. В статье есть гайд как это сделать
New API for manually tracking screen views in Google Analytics
В Firebase Analytics появилась возможность вручную трекать показы экраны на Android и iOS. Событие
screen_view
теперь можно отправить самостоятельно и иметь больше контроля за нимКогда это может пригодиться:
👉 Отправка события когда пользователь провел какое-то время на экране (не было случайного входа на экран)
👉 Экраны в вашем приложении, которые автоматическая статистика понять не могла, например дочерние View или Fragment
Старое API setCurrentScreen стало deprecated и надо с него уходить. В статье есть гайд как это сделать
The Firebase Blog
New API for manually tracking screen views in Google Analytics
#ConstraintLayout #MotionLayout
Вышел ConstraintLayout 2.0
Наконец-то вышел стабильный релиз долгостроя AndroidX - ConstraintLayout 2.0
Что нового:
👉 Улучшенный Runtime
👉 Новый механизм Flow, нечто подобное Chain, позволяющее управлять позиционированием группой виджетов горизонтально или вертикально
👉 Новый helper Layer
👉 Простой способ строить анимации с помощью MotionLayout
👉 Обновленный Layout Editor в Android Studio 4.1 с поддержкой ConstraintLayout 2.0
👉 MotionEditor - визуальный редактор анимаций, доступный с Android Studio 4.0
Примеры использования можно найти здесь
Вышел ConstraintLayout 2.0
Наконец-то вышел стабильный релиз долгостроя AndroidX - ConstraintLayout 2.0
Что нового:
👉 Улучшенный Runtime
👉 Новый механизм Flow, нечто подобное Chain, позволяющее управлять позиционированием группой виджетов горизонтально или вертикально
👉 Новый helper Layer
👉 Простой способ строить анимации с помощью MotionLayout
👉 Обновленный Layout Editor в Android Studio 4.1 с поддержкой ConstraintLayout 2.0
👉 MotionEditor - визуальный редактор анимаций, доступный с Android Studio 4.0
Примеры использования можно найти здесь
#Kotlin #DSL #Lint
Kotlin DSL —defining mandatory parameters
Kotlin DSL - удобный способ заменить Builder и позволить описывать создание сложных объектов более явно, в особенности когда они имеют вложенности.
Проблема DSL что нельзя каким-то образом проверить, что разработчик использовал все необходимые поля. Такая проверка могла пройти в коде в рантайме или нужно было требовать заполнение во вне DSL.
В статье автор рассказывает о свое библиотеке DSLint, которая на основе Android Lint делает проверку того что все необходимые поля были заполнены.
Kotlin DSL —defining mandatory parameters
Kotlin DSL - удобный способ заменить Builder и позволить описывать создание сложных объектов более явно, в особенности когда они имеют вложенности.
Проблема DSL что нельзя каким-то образом проверить, что разработчик использовал все необходимые поля. Такая проверка могла пройти в коде в рантайме или нужно было требовать заполнение во вне DSL.
В статье автор рассказывает о свое библиотеке DSLint, которая на основе Android Lint делает проверку того что все необходимые поля были заполнены.
Medium
Kotlin DSL —defining mandatory parameters
Or, why I wrote another Android library