Android Kotlin基礎講座 05.1: ViewModelとViewModelProvider
目次
まとめ
- Androidアプリアーキテクチャガイドラインはクラスを役割ごとに分割することを推奨しています。
- UI controllerはActivityやFragmentのようなUIベースのクラスです。UI controllerにはUIや対話型OSを扱うロジックのみが含まれるべきです。UIに表示されるデータなどは含まれるべきではありません。そのようなデータはViewModelに置きます。
- ViewModelクラスはUIに関連するデータを保存・管理します。ViewModelクラスを利用することで画面回転のようなコンフィグレーション変化の後でもデータを保持することができます。
- ViewModelは推奨されるAndroidアーキテクチャコンポーネントの一つです。
- ViewModelProvider.FactoryはViewModelオブジェクトを作成するために使えるインターフェースです。
以下の表はUI controllerとUI controller用のデータを保持するViewModelインスタンスの役割を比較するものです。
UI controller | ViewModel |
この記事で作成したScoreFragmentはUI controllerの一つです。 | この記事で作成したScoreViewModelはViewModelの一つです。 |
UIに表示されるデータは一切含まれていません。 | UIに表示されるデータを含みます。 |
データを表示するためのコード、クリックリスナーのようなユーザーイベントを扱うコードを含みます。 | データを処理するためのコードを含みます。 |
コンフィグレーション変化が起こるたびに破棄され、再生成されます。 | 紐づけられたUI controllerが無くなったときにのみ破棄されます―アクティビティの場合、アクティビティが終了した時、フラグメントの場合、フラグメントが取り外されたときなどです。 |
ビューを含みます。 | アクティビティ、フラグメント、ビューなどの参照は一切含みません。コンフィグレーション変化の後でViewModelは保持される一方で、アクティビティなどは破棄されるためです。 |
紐づけられたViewModelへの参照を含みます。 | UI controllerへの参照は含みません。 |
お疲れさまでした。次の講座は 5.2 LiveDataとLiveData observersです。
おすすめ書籍
Kotlinの文法をまず学びたい!という方には以下の書籍がおすすめです。Kotlinは日本語書籍がまだ豊富とは言えない状況ですが、細かく解説されており、Kotlin入門者のかたでもつまずくことなく学習できると思います。
[itemlink post_id=”1743″]実際にアプリを作りながら覚えていきたい!という方には以下もお勧めです。はじめに上の書籍で文法をさらっと学んでから取り組むのがお勧めです。
[itemlink post_id=”1745″]