yumemi-inc / android-training-template

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ViewModelの導入

Seo-4d696b75 opened this issue · comments

🎯 ViewModelを追加しましょう

Note

Required(先にいずれか完了させましょう)

Next(次に取り組みましょう)

  • 必須課題
    #17

課題内容

  • 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より引用

動作イメージ

rotation-frame

参考資料