0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AndroidのViewModel(LiveData)でハマったこと

Posted at

AndroidのViewModel(LiveData)でハマった

最近ViewModelを使い始めて(今までapplicationで保持か値渡しをしてた)でめっちゃくちゃハマって作業が進まない事が合ったのでメモ代わりに投稿してみました。
*こんなの当たり前だよ。馬鹿だなぁって思うかもしれないけど、暖かい目でみてくれると嬉しいです

何をしててハマったか

ViewModel(LiveData)を利用してFragmentAで作業Aを行いFragmentBで作業Aの結果を受け取り画面(View)を更新するようにしようとしていた。
しかし、初回にFragmentBに遷移したときは想定通りの動きをするが二回目以降FragmentBに遷移すると上手くViewが更新されない

原因は

デバックで動きを確認してみるとどうやらLiveData.observe(LifecycleOwner,Observer)が意図しない動きをしていたようだった。
具体的にはFragmentBに二回目以降遷移するとLifecycleOwnerが破棄されていないようでOnCreateが走る前に
observeが呼ばれていたのが原因のようだった。

解決方法

色々と調べているとgetViewLifecycleOwner()を使ってLifecycleOwnerを指定するとViewが破棄されると一緒に破棄されるみたいなので使ってみた。(少なくともFragmentで使うときは)
その結果onCreateが走る前にobserveが呼ばれる事がなくなりViewの更新処理も上手く動いた


引用・参考元

Android Architecture Componentsで犯しがちな5つの間違い【翻訳】

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?