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
И последняя функция но только по порядку - упрощение навигации по настройкам, когда вообще меню имеет несколько уровней вложенности. Теперь можно описывать Fragment который должен открываться по нажатию на настройку в XML.
#room #arch_components
В Room 2.1 добавили поддержку:
* FTS Support - теперь возможен более сложный поиск текста с поддержкой UTF-8
*Views - можно обьявить запрос как класс и использовать его для результатов, например упростить INNER JOIN
* Поддержка AutoValue
* Улучшена поддержка Rx. Например, запросы UPDATE, DELETE могут быть Completable.
* Поддержка множества instance Room
#coroutines #room
Поддержку корутин пока не привезли (, но учитывая что Yigit и сообщество в целом топит за это, надеюсь увидеть в Room 2.2 поддержку
А пока конвертируем Rx Observable/Flowable в Channel при помощи coroutine-rx2
#coroutines #recyclerview
DiffUtil для RecyclerView позволяют эффективно и просто изменять контент списков с анимацией, но её расчёт может занимать большой кусок времени и эту работу рекомендуется отправлять в фоновый поток. И конечно стоит использовать для этого корутины. Я потратил пару минут на чтение статьи отJag Saund о том как эта задача просто решается.
https://proandroiddev.com/better-recyclerview-with-asynchronous-diffutil-and-kotlin-coroutines-f67e4f366cda
Мир разработки меняется очень интенсивно: появляются новые технологие, одни фреймворки сменяют другие, а библиотеки улучшают то что делали старые, либо вовсе делают что неемоверно крутое. Как найти все самое интересно? Как не потеряться во множестве новостей. Этот канал предназначен чтобы помочь вам в фильтрации контента.

Обсуждения контента и предложения происходят в канале @android_broadcast_discussions
Android Broadcast pinned «Мир разработки меняется очень интенсивно: появляются новые технологие, одни фреймворки сменяют другие, а библиотеки улучшают то что делали старые, либо вовсе делают что неемоверно крутое. Как найти все самое интересно? Как не потеряться во множестве новостей.…»
Вышел #kotlin 1.3.10 который исправляет регрессии в релизе 1.3.0

Самые основные изменения:
* Функция с именем "contract" теперь может быть объявлена
* Исправлен баг с обработкой аннотаций в runtime
* Исправлены баги инкреметной компиляции
* Исправлены баги в IDE
* Исправлены баги в Gradle плагине

Подробности
https://github.com/JetBrains/kotlin/releases/tag/v1.3.10
На #AndroidDevSummit18 были доклады, которые очень хорошо смогли структурировать знания по теме. Примером такого доклада является «Files for Miles».

В рамках доклада спикер рассказал о
* Разных папках с файлами в Android и для чего они служат
* Storage Access Framework
* Direct Boot: Device и Credentials Protected Storage, как работать с ними и когда использовать
* Принципы работы кэша приложения: выделения памяти, новые принципы очистки кэша приложений, работа в Android с лимитами в кэше
* Очистка памяти на диске при необходимости (например загрузке большого файла)
* Шаринг фалов
* Рекомендации по работе с файлами через JNI
Встречайте новый выпуск Android Dev Подкаста. Речь на этот раз пойдет о архитектуре, а именно о MVI от Mosby.
Android Dev Подкаст. Выпуск 79. MVI против всех - Подкасты Android Dev
https://androiddev.apptractor.ru/android-dev-podkast-79/
Отрисовка текста одна из самых тяжёлых графических операций: она требует расчета текста на основе шрифта, размера текста, длины строки, переносов и прочих параметров. Поэтому важно заботиться о том чтобы при наличие большого количества теста на экране (например отображение большой статьи либо списка с множеством элементов в каждом из которых содержится текст). Для того чтобы оптимизировать отображение текста если следующие приемы:
* Отключение автоматического переноса на новую строку слов (нужно смотреть подходит ли это для вас, по умолчанию опция включена)
* #PrecomputedText - асинхронная подготовка текста для отрисовки (доступна в #AndroidX)
* Использование #Prefetch в #RecyclerView
* Разбиение большого текста на части и отображение их в #RecyclerView (к сожалению, будут проблемы с выделением на стыке частей)

Такие оптимизации позволяют ускорить отображение текста на Main Thread до 0.2-0.4 секунды вместо нескольких
Автор: @ArtemBagritsevich

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

Что важно знать о работе с #LiveData, чем поделились на #AndroidDevSummit18:
* LiveData - это не Stream (или Observable из Rx), а скорее Holder значения.

* Не стоит создавать дополнительный lifecycle внутри #ViewModel, лучше использовать Transformation. Как пример, приводится оператор map который преобразует #LiveData на слое репозитория в #LiveData c данными с UI слоя, что является более безопасным подходом.

* #MediatorLiveData. Я не являюсь большим поклонником кастомных операторов, так как большинство задач можно решить используя стандартные операторы, однако они приводят пример того как написать map используя MediatorLiveData.
Антипатерны:
* Не используйте #LiveData для загрузки больших данных(например json файлов), помните что её назначение это хранение информации и всё что в неё попадёт будет висеть в памяти.

* Стоит два раза подумать перед тем как создать LiveData обзёрвать и влиять на значение которой могут разные объекты, это может привести к конфликтам и морганию UI. Намного лучше создавать разные инстансы LiveData каждый раз, вместо тогоч тобы разделять одну между классами.

* Не стоит возвращать #MutableLiveData так как её можно изменять, используйте #LiveData.
В заключении несколько советов:
* #LiveData создана для конкретной цели, так что если вам нужно проделать цепочку трансформаций, то лучше использовать Rx.
* В случае если #LiveData никак не связана с UI советуют использовать callback-и, хотя я вижу и другие места, где хорошо подходит, но главное - "Всегда думайте перед тем как использовать новодный паттерн во всех частях вашего приложения".