Android Broadcast
14.2K subscribers
3.49K photos
333 videos
11 files
5.85K links
Подборка новостей и статей для Android разработчиков.

Связь с автором @android_broadcast_bot
Реклама @android_broadcast_bot

РКН https://abdev.by/rkn_tg_ab
Download Telegram
#Activity #LaunchMode

The Android Launch Mode Animated CheatSheet от Todd Greenberg

Визуализация различного поведения Activity при запуске, если начнете играться с launch mode будет вам в помощь. Все сделано в анимашках и как минимум человек заслуживает 👏 в посте на Medium!
#Lifecycle #ViewModel #Activity

The Android Lifecycle cheat sheet — part IV : ViewModels, Translucent Activities and Launch Modes

Четвертая часть в серии диаграмм жизненного цикла основных компонентов Android. В последней статье вы найдете информацию о жизненном цикле:
👉 ViewModel в Activity и Fragment
👉 Translucent Activity
👉 Activity в различных launch режимах: "single top" и "single task"
#Activity #LaunchMode

The Android Launch Mode Animated CheatSheet

Хорошая статья с визуализацией (анимашки) того как работают Launch Mode в Activity (управление back stack Activity).
#Activity #Architecture

ActivityLifecycleCallbacks — слепое пятно в публичном API

ActivityLifecycleCallbacks - это полезное API, которое позволит вам избавиться от супер класса для всех Activity, в котором вы выполняете общие действия, или элегантно решить архитектурную задачу или сделать много чего еще полезного, о чем автор рассказывает в статье:
👉 Изменять темы для всех Activity
👉 Отловить onActivityResult()
👉 Отслеживать запускаемый экраны для аналитики
👉 Улучшить inject зависимостей через Dagger Android

Если вам нужно отслеживать через callback жизненный цикл Fragment, то вы можете использовать FragmentLifecycleCallbacks.
#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()
#Fragment #Activity

Смерть startActivityForResult объявлена в Fragment 1.3.0 и Activity 1.2.0

Стандартный механизм для получения результата из Activity (например Uri сделанного фото) - это Activity.startActivityForResult. API не самое удобное и заставляющее писать кучу кода, но теперь нас ждет улучшение.

В следующей стабильной версии появляется API ActivityResultRegistry, которое будет инкапсулировать в себе работу с startActivityForResult() + onActivityResult(), а также requestPermissions() + onRequestPermissionsResult(). Добавить работу с получением результата можно будет в любой класс, API гибкое и предоставляет такие возможности.

Попробовать изменения можно в Fragment 1.3.0 Alpha 02 и Activity 1.2.0 Alpha 02
#Activity

Deep Dive into Activity Results API — No More onActivityResult()

Новая версия библиотеки androidx.activity (1.2.0) принесет нам отключение onActivityResult() в пользу нового API Activity Results API. Причем уже до релиза стабильной версии документация уже переехала на новый способ.

В статье вы найдет подробный разбор с новым API:
👉 ActivityResultContract и как его использовать
👉 Встроенные ActivityResultContract: TakePicture, GetContent и др.
👉 Запрос системных permission: RequestPermission и RequestMultiplePermissions
#Activity #Fragment

BaseActivity and BaseFragment are monsters

Y вас есть BaseActivity и BaseFragment в проекте? Если да - вам стоит обратить внимание на статью, где автор рассказывает что это за монстры и как их избегать:
👉 Наследование от классов из Jetpack
👉 Extension-функции
👉 ActivityResultContract
👉 Lifecycle callback
#Activity

Improving inter-activity communication with Jetpack ActivityResult

В ближайшем релизе androidx.activity нас ждёт замена onActivityResult() на новое API - Activity Result API. Вместо хранения requestCode, понимание правильно resultCode вы теперь просто делаете запрос и получаете результата.

Самое важное еще - все гайды с получением результата уже переписаны на новое API, а onActivityResult() будет deprecated
#Activity

Understanding the Android Activity Launch Modes

Годы разработки привели нас к Jetpack Compose и возможному отказу от Fragment. Что останется вечным - Activity. В статье разбирается как есть режиме запуска Activity и как они влияют на Task т.е. Back Stack Activity.
#activity #coroutines

Consuming Activity Results using coroutines: Part 1

Адаптация Activity Result API для работы с ними через Coroutine, чтобы убрать необходимость в Callback

Если не знаете что такое Activity Result API, то я сделал видео где подробно об этом рассказал и показал как применять. Смотреть здесь
В Jetpack уже практически отказались от Activity как точки переопределения системных callback методов. Появился OnBackPressedDispatcher, MenuProvider, ConfigChangeListener и др.

Об Activity Result API я сделал полезный разбор из 2 частей:
📺 применение в коде ваших приложений (22 мин)
📺 как оно работает под капотом на основе Activity.onActivityResult (12 мин)

#AndroidBroadcast #activity #jetpack
👍51👎11❤‍🔥8
В Activity 1.9.2 и Fragment 1.8.3 внесли правки для лучше работы с Predictive Back Gesture

#jetpack #activity #fragment
👍17👎8🎉5
🚀 Обновления Activity Embedding

👉 Изменение размера панелей теперь поддерживается из коробки
val splitAttributesBuilder: SplitAttributes.Builder = SplitAttributes.Builder()
.setSplitType(SplitAttributes.SplitType.ratio(0.33f))
.setLayoutDirection(SplitAttributes.LayoutDirection.LEFT_TO_RIGHT)

if (WindowSdkExtensions.getInstance().extensionVersion >= 6) {
splitAttributesBuilder.setDividerAttributes(
DividerAttributes.DraggableDividerAttributes.Builder()
.setColor(getColor(context, R.color.divider_color))
.setWidthDp(4)
.setDragRange(
DividerAttributes.DragRange.DRAG_RANGE_SYSTEM_DEFAULT)
.build()
)
}
val splitAttributes: SplitAttributes = splitAttributesBuilder.build()


👉 Управление затемнением интерфейса под диалогом диалога

👉 Возможность закрепить Activity Task (набор Activity) по id в части экрана
fun pinActivityStackExample(taskId: Int) {
val splitAttributes: SplitAttributes = SplitAttributes.Builder()
.setSplitType(SplitAttributes.SplitType.ratio(0.66f))
.setLayoutDirection(SplitAttributes.LayoutDirection.LEFT_TO_RIGHT)
.build()

val pinSplitRule = SplitPinRule.Builder()
.setDefaultSplitAttributes(splitAttributes)
.build()

SplitController.getInstance(applicationContext)
.pinTopActivityStack(taskId, pinSplitRule)
}


#jetpack #ui #material #activity
Please open Telegram to view this post
VIEW IN TELEGRAM
👎7👍6