0
1

More than 1 year has passed since last update.

MVVM Architecture with Android

Posted at

概要

アーキテクチャ:アプリーケーションやソフトウェア開発をする上での設計手法
意識することで開発者はある程度同じ構造で開発することができレビューも行うことができる

アーキテクチャが存在しないとどうなる?
ActivityやFragmentの処理が膨らみ可読性が低くなる
LifeCycleの破棄時などに処理が再実行されCPUやメモリへの負荷が大きくなる
→よってUIをモデルで操作して永続なデータとして保持することを推奨されている

MVVMは大規模なアプリのアーキテクチャに向いている

View → ViewModel → Model
の依存関係がある
※矢印の向きには意味があり向いていない方向の層のことを知らない
(VVMMモデルって覚えた方が楽そう...)

メモ

よく見るMVVMのモデル図がGoogleのアーキテクチャのドキュメントから消えている気がするのですがComposeが主流になりつつある中でアーキテクチャも変化しているんですかね?
理解深まったら記事更新します、詳しい方教えてください

View

担当

画面の表示や更新

  • ViewModelのLiveDataをObserveしてUIを表示させる

ユーザーの入力処理の受付

  • clickメソッドなどを受けViewModelのデータ処理メソッドを呼び出すなど

ViewModel

担当

両者の間を仲介して互いの状態変更を通知、反映させる役割を担う

  • Model層からView層にデータを受け渡す
  • 受け渡しなので双方向矢印な気もするがView層がViewModel層を参照している

ViewModelからView層の操作をしてはいけない

  • メモリリークやnullポインタの可能性が出る
  • Repositoryとの結びつけのためのDIはHiltが推奨されている

UIの状態保持

  • 双方向データバインディングする必要があるものは MutableLiveData
  • 単方向でよいものは LiveData
  • Viewのライフサイクルに依存しないため状態を存続できる

Model

担当

データの管理や保存、外部との入出力などの内部的な処理を担う

  • APIやデータベースへのアクセスを管理するクラス
  • 処理をわかりやすくさせるdata class

追記

Android Study JamでCompose勉強中なのでCompose含めたアーキテクチャに対して理解が深まれば再度追記します

参照
https://developer.android.com/jetpack/guide?hl=ja
https://zenn.dev/dd_sho/articles/5f32ce2942cbd2

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1