Обновление Android Jetpack: Activity Result API и рефакторинг Fragment
Привет! С вами Android Broadcast. Прошли 2 недели и очередной релиз библиотек Jetpack от Google уже с нами. Вышло долгожданное исправление множества багов в Fragment из-за рефакторинга внутри FragmentManager, Activity Result API и много другого. Все самое интересное вы найдете ниже, а все подробности на сайте
Если вы хотите узнавать про последние новости Android разработки сразу, тогда подпишитесь на Telegram канал Android Broadcast или следите за ними в формате видео на YouTube канале, а также подкасте
Activity 1.2.0
Все изменения здесь
-
Activity Result API — новое API для получения результата вызова Activity
val getContent = registerForActivityResult(GetContent()) { uri: Uri? -> // Handle the returned Uri } override fun onCreate(savedInstanceState: Bundle?) { // … val selectButton = findViewById<Button>(R.id.select_button) selectButton.setOnClickListener { // Pass in the mime type you’d like to allow the user to select // as the input getContent.launch(«image/*») } }
-
ComponentActivity теперь реализует ContextAware, что позволяет асинхронно получить Context до вызова Activity.onCreate(). Поддержка Coroutine уже добавлена
-
Backport метода Activity.reportFullyDrawn(), который теперь работает на всех версиях API, исправлены баги и добавлен трейсинг
-
Добавлена поддержка ViewTreeLifecycleOwner
Fragment 1.3.0
Все изменения здесь
-
Большой рефакторинг внутри FragmentManager, который исправил множество багов в работе Fragment. Подробности читайте в статье от Ian Lake
-
Интеграция Activity Result API
-
Новое API для передачи результата между двумя Fragment
// Fragment1 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // Use the Kotlin extension in the fragment-ktx artifact setFragmentResultListener(«requestKey») { requestKey, bundle -> // We use a String here, but any type that can be put in a Bundle is supported val result = bundle.getString(«bundleKey») // Do something with the result } }// Fragment 2 button.setOnClickListener { val result = «result» // Use the Kotlin extension in the fragment-ktx artifact setFragmentResult(«requestKey», bundleOf(«bundleKey» to result)) }
-
FragmentOnAttachListener — замена onAttachFragment() из FragmentActivity и Fragment, которая позволяет делегировать событие различным компонентам.
-
Стандартные эффекты анимаций TRANSITION_* теперь используют Animator вместо Animation
-
Улучшения FragmentScenario
-
Fragment.setRetainInstance() теперь deprecated. Используйте ViewModel.
-
Добавлена поддержка ViewTreeLifecycleOwner
-
Адаптеры, использующие Fragment, для ViewPager 1 теперь deprecated. Мигрируйте на ViewPager 2.
Lifecycle 2.3.0
Все изменения здесь
-
SavedStateHandle теперь поддерживает не parcelable классы
-
LifecycleRegistry теперь использует DESTROYED как последнее состояние
-
LifecycleRegistry теперь проверяет что методы вызываются на главном потоке, в противном случае — креш
-
Добавлены методы downFrom(State), downTo(State), upFrom(State), upTo(State) для генерации события, чтобы перевести Lifecycle в нужное состояние необходимой последовательностью событий.
-
Новое API ViewTreeLifecycleOwner, которое позволяет получить LifecycleOwner and ViewModelStoreOwner, основываясь куда добавлена View. Например, это уже реализовано в Activity 1.2.0 и Fragment 1.3.0.
-
Kotlin расширение LiveData.observe() теперь deprecated. Оно больше не нужно из-за появления SAM для Kotlin интерфейсов.
SavedState 1.1.0
Все изменения здесь
-
Добавлено API ViewTreeSavedStateRegistryOwner, которое позволяет получить SavedStateRegistry на основе View.
-
savedstate-ktx
Core Role 1.0.0
Все изменения здесь
-
Добавлено API RoleManagerCompat
- 8 views
- 0 Comment