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の一覧を渡すことができません。

こういった場合のベストプラクティスがあれば教えていただきたいです。

補足情報(FW/ツールのバージョンなど)

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 コメント