[Разработка под Android] Обновление Android Jetpack: Activity Result API и рефакторинг Fragment
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Привет! С вами 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
- savedstate-ktx
Core Role 1.0.0Все изменения здесь
- Добавлено API RoleManagerCompat
===========
Источник:
habr.com
===========
Похожие новости:
- [Программирование, Kotlin] Параллельные запросы в Kotlin для автоматизации сборки данных
- [Программирование, Разработка мобильных приложений, Разработка под Android, Kotlin] Как заблокировать приложение с помощью runBlocking
- [JavaScript, C++, Kotlin, TypeScript] Сага о типизации и тайпчекинге для JavaScript
- В обновлении Android-приложения с 10 млн установок выявлен вредоносный код
- [Разработка мобильных приложений, Разработка под Android] Новости Android разработки #3
- [Информационная безопасность, Разработка под Android, Монетизация мобильных приложений, Контекстная реклама] Приложение Barcode Scanner в Google Play заразило 10 млн пользователей одним обновлением
- [Программирование, Java, Совершенный код, Проектирование и рефакторинг, Kotlin] Свойства против методов
- [Open source, Программирование, Java, Kotlin] Jmix / CUBA Platform: итоги 2020 и планы на 2021 год
- [Разработка мобильных приложений, Разработка под Android, Kotlin] Системный гайд по созданию White Label android-приложений
- [Информационная безопасность, Разработка под Android] Как root-права и альтернативные прошивки делают ваш android смартфон уязвимым
Теги для поиска: #_razrabotka_pod_android (Разработка под Android), #_android, #_android_development, #_jetpack, #_fragment, #_activity, #_fragments, #_kotlin, #_razrabotka_pod_android (
Разработка под Android
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 17:33
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Привет! С вами Android Broadcast. Прошли 2 недели и очередной релиз библиотек Jetpack от Google уже с нами. Вышло долгожданное исправление множества багов в Fragment из-за рефакторинга внутри FragmentManager, Activity Result API и много другого. Все самое интересное вы найдете ниже, а все подробности на сайте Если вы хотите узнавать про последние новости Android разработки сразу, тогда подпишитесь на Telegram канал Android Broadcast или следите за ними в формате видео на YouTube канале, а также подкасте
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/*") } }
// 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)) }
=========== Источник: habr.com =========== Похожие новости:
Разработка под Android ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 17:33
Часовой пояс: UTC + 5