web-dev-qa-db-ja.com

ViewModelをサービスにバインドするのは正しいですか?

私は自分のアプリケーションでアーキテクチャコンポーネントを使い始めましたが、それを使用する方法をまだ学んでいます。

私のアプリには、さまざまなフラグメントを順番に表示するアクティビティがあります。それらのいくつかでは、外部BLEセンサーからデータを受信するために、バックグラウンドサービスと通信する必要があります。複数のFragmentでサービスと対話する必要があるため、ViewModelがバインディングを作成する適切な場所であるかどうか疑問に思っています。 私は周りを見回した しかし、私は答えを見つけられませんでした。

ViewModel内でサービスをバインドする際に問題はありますか?

16
hara

ViewModels内でAndroidフレームワーククラスを使用することはお勧めできません。

詳細については、Google Developersブログ投稿のリンクをご覧ください。 ViewModelsおよびLiveData:Patterns + AntiPatterns

ViewModelsはAndroidについて何も知らないことが理想です。これにより、テスタビリティ、リークの安全性、モジュール性が向上します。一般的な経験則は、ViewModelsにAndroid。*のインポートがないことを確認することです(Android.Arch。*などの例外を除く)。同じことがプレゼンターにも当てはまります。

ViewModels(およびプレゼンター)にAndroidフレームワーククラスについて知らせないでください。

8
Igor Bubelov