yumemi-inc / android-training-template

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Repositoryの追加

Seo-4d696b75 opened this issue · comments

💾 Repositoryを追加しましょう

Note

Required(先に完了させましょう)

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

  • 任意課題
    #22

課題内容

  • Repositoryを追加する
  • 天気状態の保持&更新をViewModelからRepositoryに移行する
  • 必要な依存をViewModel, RepositoryにHiltでDIする

Repositoryとアーキテクチャ

Androidアプリ開発におけるアーキテクチャ設計はいくつかパターンがありますが、UI層とデータ層を分離する考え方には共通点があります。データ層に位置するRepositoryはUI層へデータを公開すると同時に、具体的なデータソース(APIやローカルDB)を隠蔽します。

これまでの課題でもActivityやFragmentからデータの保持と処理をViewModelへ分離してきましたが、さらにRepositoryへ分離することでUI層とデータ層を明確に区別します。

image
Android developersより引用

HiltによるDIのスコープ

スコープを適切に設定することで同一のインスタンスを注入することができます。この課題ではアプリの状態を保持&更新する役割がViewModelからRepositoryに移動していますので、RepositoryをシングルトンとしてDIすればActivityやViewModelが破棄・再生成されても状態を保持できます。

Tip

ViewModelでSavedStateHandleを利用しなくても「Don't keep activities」オプションONで状態を保持できます

参考資料