Jetpack Composeを使ってみたい④ ViewModel, LiveData
Jetpack Composeを使ってみたい!と思ってCodelabを元に勉強してみた記録。
Jetpack Compose for Android Developers
Composeの状態管理にViewModel, LiveDataを使用する方法をまとめる。
参考は上記コードラボと公式ドキュメント。
Compose とその他のライブラリ | Jetpack Compose | Android Developers
依存関係
implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" implementation "androidx.compose.runtime:runtime-livedata:$compose_runtime_version"
ViewModel,LiveDataをComposeで使用する
class SampleViewModel() : ViewModel(){ private var _sampleData = MutableLiveData(0) val sampleData : LiveData<Int> = _sampleData ... }
@Composable fun SampleScreen( viewModel: SampleViewModel = viewModel() ){ val data by viewModel.sampleData.observeAsState() data?.let { Text(text = "$data") } }
ViewModel
viewModel()関数を呼び出してView Modelにアクセスする。
viewModel()は、既存のViewModelを返すか、指定されたスコープで新しく作成する。
一度作成されたViewModelインスタンスは、スコープが存続している限り保持される。
コンポーザブルがアクティビティで使用されている場合、viewModel()は、
アクティビティが終了するかプロセスが強制終了されるまで同じインスタンスを返す。
LiveData
observeAsState()を使用して、LiveDataをStateとしてモニタリングする。
これによりLiveDataが更新されるたびに、その値を使用したコンポーザブルが再コンポーズされる。
(State型にしないと状態として認識されず、自動的な再コンポーズがされない。)
LiveDataが返す値はnullになる可能性があるため、使用時にnullチェックをする。
前の記事
mtnmr.hatenablog.com
次の記事
mtnmr.hatenablog.com