LoginSignup
0
1

More than 5 years have passed since last update.

【Androidアプリ開発勉強】ViewModelの実態はActivityで良さそう

Last updated at Posted at 2018-08-19



この記事は間違いを含んでいるので注意!
最新の情報は訂正記事を参照してください。











前回の最後に以下のように書きました。

ViewModelはこのアクティビティのJavaファイルの事なのか、
他にオブジェクトを作ったほうが良いのか…。
こういうのが書いてある資料が無い(あるいは見つからない)んだよなぁ…。

これが気になったのでちょっと調べてみました。
結果、こんな感じの設計(構成)にしようかなぁと思ったのでアウトプット。
(これで良さげだけどデメリットが有るのかはよくわからない…)

まぁもっとモダンなやり方はあるのだろうけど、
勉強段階なので出来れば基礎からいっときたいなーと思っている。

結論

ViewはXAML
ViewModelはActivity
ModelはActivity以外のJavaが当てはまる。

参考記事を基に以下の実装とする。

ModelLocatorを生成してModelを保持する。
ModelとViewController間はObserverパターンで実装する。
ViewModelが観察者(Observer)、
Modelが被観察者(Subject)。

  • ユーザーからの操作(ボタン押下とか)
    ViewModelのイベントハンドラで(必要があれば)Modelに更新要求を出す。
    Modelは更新要求を処理して結果を通知する
    (ViewModelの生成時に監視先のModelに通知先としてViewModel自身をセットする)

  • Modelからの通知
    例えば異常時にModelからViewに通知する
    このときActivityが死んでいればそこには通知は出さない
    (Activityが死んだ時に削除通知をModelに出すので通知するときには通知対象から消えているハズ)

と、ここまで参考資料で調べて、
これだとデータ保存時とかにViewModelからModelにデータを渡すやり方とか、
取得したデータを返す方法がわからず…うーん。
引数で渡すのは密結合すぎる気がする。

もう少し調べないとダメっぽい。

参考記事

iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
IOS/Androidアプリの3つの大事な設計方針

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