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.