ViewModelってライフサイクル持ってないですよね。
ActivityやらFragmentからそれっぽいメソッドを呼び出してもらってライフサイクルを持っている動きはできると思います。
ただ、、、面倒!w
ActivityやらFragment のライフサイクルに応じてViewModelも動いてほしい!
ってことでやり方。
別にこのやり方はViewModelじゃなくても良いんだけどね、、、。
自分がやりたかったのがViewModelでだったのでってことで、、、w
実装
ViewModel
// ViewModel
class HogeViewModel() : ViewModel(), LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun onCreate() {
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun onResume() {
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun onPause() {
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
fun onDestory() {
}
}
ViewModelにLifecycleObserver を持たせる。
で、アノテーションでライフサイクルに応じて動いてほしいメソッドを記載。
なんとなくこの例でライフサイクル名と同じにしている。
Activity or Fragmentでライフサイクルを登録
lifecycle.addObserver(hogeViewModel)
HogeViewModelがLifecycleObserver 持っているので登録する感じ。
これでActivity or Fragmentのライフサイクルに応じてViewModelも動いてくれる。
お手軽!!