The Compose Compiler plugin can generate reports / metrics around certain compose-specific concepts that can be useful to understand what is happening with some of your compose code at a fine-grained level.
// val onClickB = { viewModel.incState() }
// val onClickC = { viewModel.incStateFlow() }
val onClickB = remember { { viewModel.incState() } }
val onClickC = remember { { viewModel.incStateFlow() } }
とすべて remember 扱いにします。
イメージしていたログ出力になりました。
■ 「::」を使う
こんな記述はどう? というので書き換えてみます。
// val onClickB = { viewModel.incState() }
// val onClickC = { viewModel.incStateFlow() }
// val onClickB = remember { { viewModel.incState() } }
// val onClickC = remember { { viewModel.incStateFlow() } }
val onClickB = viewModel::incState
val onClickC = viewModel::incStateFlow
これもイメージしていたログ出力になりました。
少し驚きました。
■ State 取得部分はどうなの?
Screen 自体が recompose されてるのなら、こうしたほうがいいのでは?
// val countB by viewModel.countState
// val countC by viewModel.countStateFlow.collectAsStateWithLifecycle()
val countB by remember { viewModel.countState }
val countC by remember { viewModel.countStateFlow }.collectAsStateWithLifecycle()
This is only available in Electric Eel at the moment:
"For even more cutting edge features, you can take a sneak peek at the Android Studio Electric Eel release in the Canary channel [...] These features will be promoted to more stable channels once we have your feedback and make improvements, so please try them out."