Size: a a a

Android Broadcast

2020 January 25
Android Broadcast
"Now in Android" теперь на YouTube

"Now in Android" с последними новостями Android разработки из Google от Chet Haase теперь стало доступно в видео формате
источник
Android Broadcast
#AndroidKtx #Kotlin #Codelab

Building a Kotlin extensions library

Используете ли вы Android KTX библиотеки? Это расширения стандартного API и библиотек из Jetpack чтобы удобно писать под Android на языке Kotlin.

Google выпустила новую Codelab с руководством как создать свою собственную Ktx библиотеку и адаптировать ее API. Рассматриваются:
👉 Extension Functions
👉 Coroutines
👉 Flow

Также рекомендую посмотреть доклад "KotlinConf 2019: Android Jetpack ❤️ Kotlin: On the road to more wholesome APIs" от Wojtek Kaliciński
источник
2020 January 27
Android Broadcast
#Jetpack #Fragment

Jetpack Updates 22.01.2020

Новая пачка обновлений библиотек из Jetpack:
👉 Activity 1.1.0
👉 Fragment 1.2.0
👉 Lifecycle 2.2.0
👉 ViewModel-SavedState 1.0.0
👉 Navigation 2.2.0
👉 Sqlite 2.1.0
👉 Transition 1.3.0
👉 WorkManager 2.3.0

Также еще вышли новые альфы CameraX, Ads, Heif Writer и TextClassifier

Давайте подробнее пройдется по каждой из библиотек
источник
Android Broadcast
#Jetpack #ViewModel #SavedState

ViewModel-SavedState 1.0.0

В ViewModel решена задача с сохранением данных при изменение конфигурации. Ранее состояние сохранялась пока жив процесс, но вот при его уничтожение системой способа сохранить данные "из коробки" не было. Теперь есть - SavedStateHandle
источник
Android Broadcast
#Jetpack #Activity #ViewModel

Activity 1.1.0

Важным изменением в новой версии Activity стала изменение используемой по умолчанию фабрики для создания ViewModel. Раньше использовалась AndroidViewModelFactory на смену которой пришла SavedStateViewModelFactory.

Теперь вы можете получить SavedStateHandle в конструкторе ViewModel, например

class MyActivity : Activity() {
  val vm: MyViewModel by viewModels()
}

class MyViewModel(
   savedState: SavedStateHandle
) : ViewModel()
источник
Android Broadcast
#Fragment #ViewModel #Jetpack

Fragment 1.2.0

👉 FragmentContainerView - новая ViewGroup, предназначенная специально для размещения в ней Fragment. Она исправляет проблемы с анимациями при выполнение транзакций. Забудь о FrameLayout или <fragment>, теперь только FragmentContainerView.
👉 Изменение используемой по умолчанию фабрики для создания ViewModel по аналогии с Activity 1.1.0
👉 Fragment.onDestroyView() теперь вызывается только после окончания анимации/transition
👉 Новые проверки Android Lint: теперь проверяется правильность использования getViewLifecycleOwner()
👉 Fragment.getFragmentManager() переименовано в Fragment.getParentFragmentManager()
👉 FragmentManager теперь поддерживает операции (add/replace и др.) с Fragment по их классу, в дополнение к заранее созданному объекту. Это улучшает поддержку возможности по интеграции DI в конструктор Fragment.
источник
Android Broadcast
#ArchitectureComponent #ViewModel #Lifecycle #Coroutines

Lifecycle 2.2.0

Много новых интеграций с Kotlin Coroutines:
👉 Конвертация Flow <-> LiveData
👉 liveData { } - генератор значений с помощью Coroutine, которые доставляются через LiveData
👉 LifecycleCoroutineScope - специальный CoroutineScope, связанный с Lifecycle. Он позволяет запускать Coroutine, когда Lifecycle достигнет определенного состояния с помощью launchWhenCreated, launchWhenResumed и launchWhenStarted
👉 suspend функции, связанные с LifecycleOwner и Lifecycle, которые позволяют дождаться заданного состояния Lifecycle: whenCreated, whenStarted, whenResumed, whenStateAtLeast (только для Lifecycle)


Но помимо этого
👉 Теперь вместо ViewModelProviders.of() надо создавать ViewModelProvider через конструктор
👉 Gradle Incremental Annotation Processor: Теперь вместо аннотирования методов, который должны вызываться на методы жизненного цикла, с помощью @OnLifecycleEvent используйте DefautLifecycleObserver.
источник
Android Broadcast
#Jetpack #ArhitectureComponents #WorkManager

WorkManager 2.3.0

Появилась возможность задавать системе, что выполняемая операция важна, и что процесс должен оставаться живым как можно дольше во время выполнения. Работает механизм поверх Foreground Service. Используйте setForegroundAsync

Также появилась возможность отображать прогресс выполнения задачи с помощью setProgressAsync
источник
Android Broadcast
#Jetpack #Navigation

Navigation 2.2.0

👉 Возможность получения элемента из back stack по id элемента из графа. Используйте getBackStackEntry
👉 Параметры в Deep Link теперь могут быть в любом порядке
👉 Появилась поддержка опциональных параметров в Deep Link
👉 Улучшение работы анимаций
источник
Android Broadcast
Стоит ли делать обзоры обновлений Jetpack в формате t.me/android_broadcast/1397 ?
Окончательные результаты
63%
Да, несколько постов тредом
26%
Да, все в одном посте
7%
Нет, выноси на отдельный ресурс и пости ссылку
3%
Не стоит делать вообще такого
2%
Другое
Проголосовало: 333
источник
Android Broadcast
#Gradle #Performance #Modularization

O(1) Android build time at Tiki

Разработчики подходят с разных сторон в попытке оптимизировать Gradle сборку и сделать работу быстрее. В Tiki сделал довольно интересно решение - подключение только одного feature модуля с которым сейчас работает разработчик, что позволил сократить время разработки.

Как это реализовать и каким образом должны подключаться модули вы можете найти в статье.
источник
Android Broadcast
#Internship #Moscow

Весенняя стажировка (2020) для мобильных разработчиков в Redmadrobot

Компания Redmadrobot запуска стажировку для Android и iOS разработчиков. Стажировка призвана не научить вас написать первое приложение под ваш смартфон, а погрузиться глубже на основе базиса знаний.

Что обещают:
👉 Самые актуальные навыки для разработчика в 2020 году
👉 Материалы из проектов Redmadrobot
👉 Две рабочие группы: iOS и Android
👉 Очные вечерние занятия на Swift/Kotlin три раза в неделю с 18:30 до 20:30
👉 Интересные и реально сложные домашние задания (мы предупредили!)
👉 Знакомство с проектными бизнес-процессами и внутренней кухней компании

До конца дойдут только самые упорные и прокаченные на новый уровень разработчики, а лучшие получат еще и предложение от Redmadrobot. Самое главное - это возможность получить знания от профессионалов своего дела.
источник
2020 January 28
Android Broadcast
#CustomView

Documenting your XML attributes – Custom View

Многим приходилось сталкиваться с View не из Android SDK или AndroidX, а также писать их самостоятельно. И самое обидное порой, что разработчик может добавить множество XML атрибутов для кастомизации View, но не задокументировать их. Зачастую в таком случае единственным источником правды становится репозиторий проекта на GitHub, а то и вовсе исходник.

В статье разбирается как задокументировать атрибуты View и как это улучшит разработку.
источник
Android Broadcast
#Coroutines #Flow #RxJava

From RxJava 2 to Kotlin Flow: Threading

Kotlin Flow - это реализация реактивных стримов на основе Coroutine, и естественно Android разработчики будут сравнивать ее к тому, чему уже привыкли - RxJava 2.

В статье автор проводит сравнение работы по управлению Java потоками выполнения в RxJava Obserable и Coroutine Flow, а также миграции с первого подхода на последний.
источник
Android Broadcast
#WebView #DarkTheme

Enabling dark theme in Android WebViews

Темная тема - крутая фича, но проблемным местом ее интеграции оставалось WebView, где контент отрисовывается независимо от приложения с чем адаптация этого виджета для поддержки темной темы становилась сложнее.

Следующая версия библиотеки androidx.webkit 1.2.0 (пока достигла статуса alpha01) добавляет возможности по работе с темной темой
источник
Android Broadcast
#DevFest

GDG DevFest On Demand

Google собрала видеозаписи всех докладов сезона DevFest 2019 года со всех уголков мира и по всем темам в одном месте
источник
2020 January 29
Android Broadcast
#UI #ServerDrivenUi

Dynamic screens using server-driven UI in Android

Не любой контент получится отобразить простым путём маппинга модели на UI. Порой описание элементов могут иметь множество полей разного типа и меняться в зависимости от типа элемента. Как же решать эту задачу?

Построить одну универсальную View и скрывать/показывать поля? Может сработать, но решение не гибкое и код станет кучей if...else. На помощь может прийти решение Server Driven UI (SDUI), когда сервер управляет тем, что показать и как. Нечто подобное HTML, но SDUI - нативное и более ограничено в возможностях.

В статье рассматривается пример реализации описания формата для SDUI и различные фреймворки, которые позволяют отображать его: Litho от Facebook, Epoxy от Airbnb и другие менее известные
источник
Android Broadcast
Анонсирована Kotlin Conf 2020! Она пройдет в Канаде, 9 - 11 сентября.

Грустно, добраться туда далековато и непросто. Придется пропустить этот год и ждать возвращения конференции в Европу, а может и Россию.
источник
Android Broadcast
#ViewModel #ArchitectureComponent #UnderTheHood

Android ViewModel. How it works

Android Architecture Components - довольно популярное решение на сегодня в Android разработке. Понимание механизмов работы его компонентов поможет эффективнее использовать его и подать идеи как реализовать другой функционал с использованием аналогичных механизмов.

В статье разбирается:
👉 ViewModelProvider
👉 ViewModelStore
👉 ViewModelStoreOwner
👉 Эволюция ViewModel: 2017, 2018, 2019
👉 Где хранится ViewModel чтобы переживать пересоздания Activity/Fragment при смене конфигурации
источник
Android Broadcast
​​#Animation

Change Theme Dynamically with Circular Reveal Animation on Android

Разбор того, как работает анимация смены темы в Telegram
источник