Android、Kotlin、coroutine、viewmodel、roomでobeserverパターンじゃなきゃダメ?
解決したいこと
Android、Kotlin、coroutine、viewmodel、roomでアプリを作成しています。
画面にコンボ(spinner)があって、そのspinnerに表示すべき内容のkey、valueはDB(SQLite)に持っています。
この、spinnerに表示すべき内容のkey、valueはこのActivity起動中は不変なので、起動時にroomで一度だけ取ってきて、spinnerに表示すればよいです。
このような場合でも、Flow、LiveDataを使ったobserverパターンじゃないといけないのでしょうか?
(基本、変更ないんだからobserverパターンじゃなくてもいいんじゃないか?)
- viewModelScope.launch
- async
- await
の組み合わせでできるかと思ったのですが、なかなかうまくいかず、MainActivityのspinnerにroomで取ってきたkey、valueの一覧を渡すことができません。
こういった場合のベストプラクティスがあれば教えていただきたいです。
環境
AndroidStudio Electric Eel 2022.1.1
Android R 11 (API 30)
Kotlin 1.8.0
coroutine 1.6.4
room 2.5.0
lifecycle components 2.5.1
viewmodel 1.6.1
0