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()
Jetpack Compose is multiple things under one name:
- A compiler plugin that helps efficiently calculate the difference between two in-memory tree data structures
- A new UI toolkit for Android
- A new UI toolkit for desktop apps (Compose Desktop)
Android Studio Electric Eel 以降では、ライブ編集を使用して Compose の開発を高速化できます。ライブ編集は、リテラルのライブ編集をより強力にしたものです。この機能では、プレビューを自動的に更新し、コードの変更をエミュレータまたはデバイスにデプロイすることで、コンポーザブルの更新の影響をリアルタイムで確認できます。