【发布时间】:2020-11-06 22:53:43
【问题描述】:
我有一个大型应用程序:
- 一些片段需要显示通过蓝牙接收到的实时数据(使用前台服务来保持与健康设备的连接)。
- 一些显示存储数据的片段 - 可能需要访问存储库(因此,使用 MVVM 架构组件模式很好,甚至推荐使用)。
我的问题很简单:
是否正确(从架构的角度/应用程序设计)不使用流程:View-ViewModel-Repo-DB/Cloud 访问,对于整体应用? - 仅将 Android 模式应用于那些显示存储数据的片段/活动。
我问这个,只要显示实时数据(不存储在持久存储中,而是由服务广播)不会折叠在 MVVM 模式上:(什么的回购?我没有 2-3- 4-5个数据源来管理它们;ViewModel是什么?) 我可以只拥有几个 LiveData 对象 - 在 Singleton 类中 - 由服务更新/或者服务可以发送“实时”广播(因此活动只是绑定到服务或观察 Singleton 类中的一些 LiveData 对象),没关系)。
这个问题背后的想法是前台服务是数据源,而不是持久数据。如果将 Android 的 MVVM 设计应用于整个应用程序,就会出现一个额外的问题:
- 前台服务“放置”在this 图中的什么位置? 它是一个应用组件,因此它应该与 Activity/Fragment 处于同一级别。 另一方面,它是数据的来源。 (因此,它应该放在 Repository 下)。
另外,我有一些 UI 和服务使用的 SharedPref,例如:
- ALERT_HEART_RATE - 当收到的值 >= ALERT_HEART_RATE 时,服务会提醒用户; - 活动显示此值/提供更改此值的可能性。
谢谢。
【问题讨论】:
-
我可能无法准确回答您的问题,因为您的问题对我来说微不足道,尽管我可以肯定地传达一件事,即使对于您的前台服务模式,您仍然可以遵循 MVVM 模式,您的服务现在更新 repo 而不是直接更新 UI 并且您的 UI 现在通过 viewmodel-repo 请求实时数据。查看我的这个答案:stackoverflow.com/a/53552240/10271334
标签: android android-service android-livedata android-architecture-components android-mvvm