yumemi-inc / android-training-template

Apache License 2.0
13 stars 2 forks source link

Repositoryの追加 #21

Open Seo-4d696b75 opened 1 year ago

Seo-4d696b75 commented 1 year ago

💾 Repositoryを追加しましょう

[!NOTE]

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

  • 18

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

  • 任意課題

    22

課題内容

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で状態を保持できます

参考資料