Maybe we can optimize it in the following way:
Since a new instance of
update
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.