context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0,
) : AbstractComposeView(context, attrs, defStyleAttr) {
private var stateFlow = MutableStateFlow(ScoresCellState())
init {
mlog { tag = "ScoresCellBinding"; message = "init" }
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnDetachedFromWindowOrReleasedFromPool)
}
@ModelProp
fun model(state: ScoresCellState) {
stateFlow.value = state
}
@Composable
override fun Content() {
mlog { tag = "ScoresCellBinding"; message = "Content()" }
MmlTheme {
val state: ScoresCellState by stateFlow.collectAsState()
mlog { tag = "ScoresCellBinding"; message = "widget" }
ScoresCellWidget(
....
)
}
}
}
Вьюха выглядит так.
Добавил логи. init совётся норм - создаётся 6 вьюх в моём случае.
A Content() вызывается часто при скроллинге. Несмотря на то, что flow превращается в state внутри MmlTheme.
Ща попробую в конструкторе сделать setContent.
они в v1.2.0-alpha06 улучшали производительность этого кейса https://developer.android.com/jetpack/androidx/releases/compose-ui#1.2.0-alpha06
Обсуждают сегодня