Coroutinesを多く使っており、非常に相性が良いです。Coroutinesを組み合わせて使ういくつかの方法について紹介します。Composeでは、Stateの値を変化させることで画面更新をさせることができます。使うことでStateに変換することができ、Composeに反映させることができるようになります。count.toString())}StateFlowではないFlowをStateに直す際は、初期値が必要です。使うことで実現できます。表示時にCoroutinesが起動され、非表示になったタイミングでキャンセルが行われます。指定したkeyが変更になった際には一度キャンセルされ、新たにCoroutinesが起動されます。functionになっており、Coroutines内で呼び出す必要があります。以下は、引数のerrorが変更されたタイミングでsnackbarを表示するサンプルです。snackbarHostState)}表示時に一度のみ起動したい場合は、keyにUnitやtrue等、変更されないものを指定することで実現できます。内で参照されている変数は基本keyに指定しておくことで、古い値を参照し続けることを防ぐことができます。等、絶対に変更されない値はkeyに指定しなくて問題ありません。ViewModelからFlowやChannelでイベントを送っている場合も、LaunchedEffectを使うことで受け取ることができます。以下はクリック時にsnackbarを表示する例です。非表示時にキャンセルされるため、安全に扱うことができます。LaunchedEffectと同様に表示時に起動され、keyをしている場合はkeyの変更に合わせて再起動されます。state)}collectAsStateの実装にもproduceStateが使われていました。今回は1例として上げましたが、実際はComposable関数から直接APIを叩くことは少ないと思うので、あまり使うことが無いかもしれません。以下のようにスクロール位置をFlowで監視することができます。}}Flowの作成やFlowのオペレータによる変換は、Composable関数内で呼び出すとRecompose毎に再生成されてしまうので、rememberやLaunchedEffect内でのみ行ってください。Composable関数の引数をFlowに変換することはできません。更新することでFlow化することができます。}}あまり利用ケースは多くないかも知れませんが、以下のようなComposable関数を用意しても良いでしょう。flow}Lifecycleを考慮する上記の方法では、いずれもLifecycleを考慮していないため、バックグラウンドにいるときも動作し続けます。repeatOnLifecycleを使うことでLifecycleに従って動作させることが可能になります。取得することができます。onStartからonStopまでを動作させたい場合は、以下のように記述することで実現が可能です。snackbarHostState)}以下のようなComposable関数を用意しておくと便利かもしれません。}}collectAsStateを行うケースも、ほとんどの場合はonStartからonStopの間でのみ行えば良いでしょう。こちらも、以下のようにLifecycle指定でcollectできるようにしても良さそうです。ついては以下の記事も参考にしてください。Coroutinesを組み合わせる方法について紹介をしてきました。Viewと比べて、格段にCoroutinesを呼び出しやすくなっていると思います。ライブラリ内の処理や標準コンポーネントの実装を見ることで、より良い使い方を学ぶことができます。一方で、関心の分離の観点から、UIを表現するComposable関数にドメインロジックを含ませないように心がけるべきでしょう。Lifecycleをどれくらい考慮すべきかについても議論があると思います。利用したほうがわかりやすいケースも多いと思います。状況に合わせて選択してもらえると幸いです。AtsushiTopWorksPhotosBlogContact。