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

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

РКН https://abdev.by/rkn_tg_ab #MQRZR
Download Telegram
#AndroidQ #ScopedStorage #BestPractices

Android Q Scoped Storage: Best Practices and Updates

Следующей релиз Android (Q), направлен на улучшение безопасности пользователей. Частью этих улучшения стали новые ограничения на работу с файлами - Scoped Storage.

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

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

Для остальных - придется вносить правки в свою работу с файлами, но разработчики Android ОС предоставляют рекомендации, который вы можете найти в статье.
👍1
#Optimizations #AndroidGo #Memory #Yandex

Приложение в памяти на практике: наш опыт оптимизации Яндекс.Лончер
Продолжительность: 21:28 + 6:16 (QA)

В докладе рассматриваются следующие вопросы:
👉 Яндекс.Лончер: особенности приложения и почему необходимо его оптимизировать по потреблению памяти. 👉 Особенности работы на Android Go edition
👉 Как измерять расход памяти приложением? Android Studio Profiler, Memory Analyzer (MAT), dumpsys meminfo
👉 Уменьшение потребления памяти приложением: от простых (отказ от Enum-ов) к сложным (lazy inflate и программное создание View)
👉 Мониторинг расхода памяти: Android Lint, тестирование расхода на устройствах/эмуляторах

Также доклад доступен в виде статьи.
👍1
#Fragmentation #Yandex #AIDL #AOSP

Секреты API Android-устройств
Продолжительность: 26:36 + 4:13 (QA)

👉 Виды фрагментации Android: по версии API, по версии Android ОС (Phone, Wear, Auto, TV), по производителям
👉 Строение AOSP, встраивание эксклюзивного API производителей устройств (вендоры) в сборку Android
👉 Взаимодействие с API вендоров по средствам AIDL
👍1
#NullSafety #Rave #Uber

How Uber Engineering Verifies Data at Runtime with the Annotations You Already Use

Сталкивались ли вы с проблемой, что данные, присылаемые сервером, отличается от ожидаемых вами в описанных вами моделей (классов)? Например, поле которое у вас объявлено как @NonNull вдруг пришло null? Или значение одного из полей моделей должно быть в пределах от 0 до 1, но сервер прислал 1.5?

Не будьте уверены в своем сервере на 100%, так как может что-то поменяться в любой момент и вы начнете ловить странные баги из-за изменений возможных значений в полях. Как итог - трата большого количества времени на поиск проблемы.

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

Поддерживаются следующие аннотации:
👉@NonNull и @Nullable
👉TypeDef аннотации: @StringDef, @IntDef и @LongDef
👉Аннотации ограничений на значения: @IntRange, @FloatRange, @Size и др.
👉 Собственные аннотации @MustBeFalse и @MustBeTrue, которыми могут быть аннотированы методы, проверяющие более сложные условия для данных внутри модели.

Валидация кода выглядет следующим образом:

void validateMyModel(SimpleModel myModel) {
try {
Rave.getInstance().validate(myModel);
} catch (UnsupportedObjectException e) {
// handle unsupported error case.
} catch (RaveException e) {
// handle rave validation error.
}
}


Rave эффективна для интеграции с библиотеками, которые предоставляют сериализованые данные (например JSON), а вы их на стороне клиента парсите в объекты языка. Яркий пример REST сервис, с которым вся работа в Android приложения осуществляется на основе библиотеки Retrofit, причем уже есть готовый конвертер - RaveConverterFactory.
#Kotlin #Conference

Kotlin Night Kyiv 2019

1 июня в Киеве пройдет крупнейшая в Украине конференция по Kotlin и технологиям, связанным с этим языком программирования.

В рамках конференции будет 3 потока:
👉 General
👉 Android
👉 Backend

В рамках конференции я выступлю с докладом о том как добиться полной гармонии при разработке приложений под Android с использованием корутин.

👉 Купить билет 👈 Скидка 10% по промокоду Rozov10

До конца апреля еще есть возможность купить билеты по сниженной цене (1500 UAH ~ 57 $ ~ 3700 RUB)
👍1
#Network #Library

netWatch

Небольшая библиотека, которая проверяет наличие доступа в интернет. Именно интернет, а не наличие Wi-Fi или мобильной сети.

Библиотека имеет следующие функции:
👉 Уведомление об изменение состояния подключения к интернету
👉 Отображение системного кастомизуремого уведомления при измненения состояния подключения к интернету
👉 Делать ping по указанному IP адресу, чтобы проверить возможность подключения
👍1
#Mobius #Conference

22-23 мая в Санкт-Петербурге состоится международная конференция по мобильной разработке — Mobius 2019 Piter!

В центре внимания инженерные подходы в iOS и Android-разработке. Приходите обсудить Java, Kotlin, Swift и другие технологии, инструменты, фреймворки, архитектуру и не только!

Спикеры этой конференции:
👉 Йонатан Левин - Android GDE и основатель Android Academy
👉Андрей Бреслав - отец языка Kotlin, который будет говорить не о Kotlin 😔
👉Corey Latislaw - Android GDE, техлид TAB/The App Business и экс-тимлид Capital One, XfinityTV and Pinterest.
👉Hannes Dorfmann - автор MVP-библиотеки Mosby
👉Денис Неклюдов - GDE по Android, Pay и IoT и ведущий Android Dev Podcast;
👉Константин Цховребов - Android-архитектор в Redmadrobot, автор библиотеки Cicerone.
👉 Кирилл Розов - тимлид в EPAM, автор канала Android Broadcast

Завтра (1 мая) повышается цена на билеты. По промокоду AndroidBroadcastPromo вы получите скидку.
👉👉👉Купить билет 👈👈👈
👍1
#Architecture

Bohemian Wrapsody

Стоит ли оборачивать сторонние библиотеки своими собственными интерфейсами? Это может принести несколько положительных аспектов для вашего проекта:
1️⃣ Независимость от стороннего API
2️⃣ Модуляризация проекта
3️⃣ Скорость сборки и параллельная компиляция модулей независимо
4️⃣ Сторонние зависимости будут объявлены только в модулях где они используются, а не все в модули вашего приложения
5️⃣ Возможность добавления нового функционала в своем API-обертке поверх сторонней библиотеки

В статье рассматриваются подходы как стоит делать такие обертки и каких ошибок не допустить.
👍1
Оборачиваете ли вы сторонние библиотеки в свое собственное API?
Final Results
15%
Все что получается
23%
Только слой модели
62%
Нет
👍1
#Material #Animation #Transition

Playing with Material Design Transitions

Реализация красивых анимаций на Android не так проста 😔. Все разработчики надеяться, что с приходом MotionLayout, все изменится. Пока этого не произошло - смотрите руководство о том, как сделать красивую анимацию перехода.

Также в статье рассматривается сделать красивую анимацию на основе AnimatedVectorDrawable с помощью утилиты Shape Shifter.

👉 APK с реализацией анимации
👉 Исходный код
👍1
#ProjectMarble #AndroidStudio #LayoutEditor

Android Studio Project Marble: Layout Editor

Улучшение Android Studio в рамках Project Marble пришло в Layout Editor. Уже в Android Studio 3.5 можно наблюдать следующие улучшения:
1️⃣ Список всех constraint для ConstraintLayout
2️⃣ Создание constraint с помощью drag-and-drop
3️⃣ Удаление constraint
4️⃣ Визуальное обновление для более четкого обозначения constraint.
5️⃣ Улучшение в изменение размера окна превью
6️⃣ Добавлена возможность выбора размеров из ресурсов для margin

В статье вы найдете подробное описание и примеры вида "было-стало" в Layout Editor по всем улучшениям.
👍1
#Room #Architecture

Don't Pass Around Your Room/Database Entity

Статья о том как как правильно работать с сущностей (entity) в Room, когда вы выносите БД в отдельный Gradle модуль. Советы также справедливы и для других библиотек по работе с БД.

Спойлер: надо делать маппинг сущностей и не подключать зависимости для работы с БД вне модуля работы с базой.
#Firebase #MLKit #SmartReply

Exploring Firebase ML Kit on Android: Smart Reply

Совсем недавно произошел анонс о выходе в бету новой функции в Firebase ML Kit - Smart Reply. Она позволяет на основе на основание переписки предложить возможные варианты ответов. Весь механизм работает на устройстве и подключение к интернету не требуется. Текущие ограничение - поддерживается только английский язык.

В статье рассматривается как интегрировать Smart Reply к себе в приложение.
👍1
#Coroutines #CoroutinesOnAndroid

Coroutines on Android

Серия статей по использованию корутин на Android от команды разработки Android OS. В руководстве рассматриваются как работают корутины, какие проблемы решают и как работать с ними.

Уже доступны 2 статьи из серии
1️⃣ Getting the background
👉 Базовые концепции подхода корутин
👉 Какие проблемы эффективно решаются при помощи корутин
👉 Какие Dispatcher использовать и как

2️⃣ Getting started
👉 Work leak - фоновая задача (корутина, поток, RxJava Observable или др.) на которую вы потеряли ссылку и она выполняется даже если ее результат больше не нужен
👉 Structured concurrency
👉 Arch Components ViewModel & CoroutineScope
👉 Unit тесты viewModelScope

Те кто хочет закрепить практикой полученные знания, можете обратить внимание на codelab от Google
"Using Kotlin Coroutines in your Android App"
👍1
#Kotlin #Performance #Benchmark

Measuring Kotlin Build Performance at Uber

В Uber заморочились оценкой производительностью компиляции Kotlin и провели большой эксперимент по сравнению Java и Kotlin проектов в различных конфигурациях проекта.
👍1
#Kotlin #Flow #Coroutines

Simple design of Kotlin Flow

В статье раскрываются принципы дизайна нового API холодных стримов, появившегося в Coroutines 1.2, - Flow:
👉 как они работают
👉 стандартные операторы и как написать свои собственные
👉 backpressure
👍1
#Animation

Easings for Android

Хороший набор интерполяторов для Android анимаций (30 штук).

В библиотеки присутствует демо проект, который визуализирует с помощью графиков работу каждого интерполятора.
👍1
Вы используете GraphQL ?
Final Results
7%
Да
71%
Нет
23%
Не знаю что это