ViewModelの導入
Seo-4d696b75 opened this issue · comments
🎯 ViewModelを追加しましょう
課題内容
- ViewModelの依存を
app/build.gradle
に追加 - ViewModelを追加
- ViewModel内部で天気情報を取得する
AAC (Android Architecture Components)のViewModelをアプリに追加しましょう。ViewModelで天気情報を取得・保持する実装を行うと様々な利点があります 🚀
ビジネスロジックの分離
アプリの状態をUIにどう反映させるかの処理をUIロジックと呼び、ActivityやFragmentとレイアウトファイル(Jetpack Composeの場合はComposable関数)が該当します。一方でデータを管理してアプリの状態を更新する処理をビジネスロジックと呼びます。これまではActivityやFragmentに直接ビジネスロジックを記述していましたが、ViewModelに分離することでActivityやFragmentはUIロジックに専念できます。
Tip
- Activity, FragmentからViewModelを参照するには
by viewModels()
イディオムが便利です - Composableの引数にViewModelを追加してデフォルト引数に
viewModel()
を指定します
ViewModelのライフサイクル
画面の回転など構成が変更されるとActivityは再生成されるため、アプリの状態(表示されている天気アイコン)が初期状態に戻ってしまい維持されません。しかしViewModelで状態を保持すると画面の回転でも状態を維持できます👍
ViewModelはActivityよりもライフサイクルが長く、画面が回転しても生存し続けるためです。
Android developersより引用