fengdai
02/24/2023, 7:49 AMAndroidViewBinding and I think it may be an point worth optimizing:
AndroidViewBinding ’s update block is invoked at least twice. Even when the update lambda is empty:
AndroidViewBinding(factory = AnyBinding::inflate) {
// ...
}fengdai
02/24/2023, 7:50 AMupdate block is created every recomposition, it’s better to remember it before passing it to `AndroidView`:
val updateBlock = remember {
{ viewBindingRef.value?.update() }
}
AndroidView(
factory = viewBlock,
modifier = modifier,
update = updateBlock
)
And, since
fragmentContainerViews.clear()
can cause a recomposition, it’s also better to check whether fragmentContainerViews is empty before clear it:
if (fragmentContainerViews.isNotEmpty()) {
fragmentContainerViews.clear()
}
Thus, when there’s no Fragment in the inflated layout, no recomposition will be triggered.