Привет! С вами 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(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)