Android 将ViewModel绑定到服务是否正确?

Android 将ViewModel绑定到服务是否正确?,android,android-service,android-architecture-components,android-viewmodel,Android,Android Service,Android Architecture Components,Android Viewmodel,我已经开始在我的应用程序中使用架构组件,我还在学习如何使用它 在我的应用程序中,我有一个按顺序显示不同片段的活动。在某些情况下,我需要与后台服务通信,以便从外部BLE传感器接收数据。由于我需要在多个片段中与服务交互,我想知道ViewModel是否是进行绑定的正确位置。但我没有找到答案 在ViewModel中绑定服务是否有问题?不建议在ViewModels中使用Android框架类 以下是谷歌开发者博客上的链接,详细解释如下: 理想情况下,ViewModels不应该了解Android。这 提高可测

我已经开始在我的应用程序中使用架构组件,我还在学习如何使用它

在我的应用程序中,我有一个按顺序显示不同片段的活动。在某些情况下,我需要与后台服务通信,以便从外部BLE传感器接收数据。由于我需要在多个片段中与服务交互,我想知道ViewModel是否是进行绑定的正确位置。但我没有找到答案


在ViewModel中绑定服务是否有问题?

不建议在ViewModels中使用Android框架类

以下是谷歌开发者博客上的链接,详细解释如下:

理想情况下,ViewModels不应该了解Android。这 提高可测试性、泄漏安全性和模块化。通则 thumb是为了确保您的应用程序中没有android。*导入 ViewModels(android.arch.*等例外)。这同样适用于 主持人

不要让ViewModels(和演示者)知道Android框架 班级


我也在想同样的事情。似乎如果在视图模型中绑定服务,就不能保证及时绑定服务。然而,如果服务被绑定到活动中,那对我来说就没有意义了。你明白了吗?嗨,万事达。我目前正在应用程序的ViewModel中使用Bing。一切似乎都很好。我在寻找解决方案时读了@Igor Bubelov提到的帖子,但我没有找到更好的方法,对我来说,在ViewModel中使用绑定似乎是最差的选择。等待查看是否有其他参数将我的服务绑定到ViewModel,并且效果非常好。ViewModel是唯一与我的服务具有完全相同生命周期的产品。我不喜欢这样做,因为这似乎违反了这里提到的经验法则,但我不知道还有什么可以约束它。我的存储库,并尝试将该服务视为数据源?我希望谷歌能更清楚地说明它的新架构。你如何看待将服务绑定到片段而不是viewmodels中?@blow取决于应用程序设计和需要访问服务的内容。如果只有一个片段需要访问,请在那里执行,否则请在“活动”或“视图模型”级别执行。为了可测试性,您希望您的视图模型独立于Android框架,但无论如何,您最终会得到一些与操作系统服务管理相关的代码,这些代码很难测试。在链接文章的最后一部分中,关于扩展LiveData,他们提到了使用LiveData和ViewModels处理服务,因此很明显,他们不排除这是与服务接口的适当级别。