【发布时间】:2017-10-11 07:35:51
【问题描述】:
我正在探索 Google 的 Android Architecture Components。在我的项目中,我依赖Services 和IntentServices。从 IntentService 或 Service 与应用程序的 ViewModel 通信的正确方法是什么?使用 LiveData 可以实现吗?
【问题讨论】:
-
MVVM 架构中的什么角色会扮演你的服务角色?
-
IntentService 用于远程数据获取,gps 位置用于服务。
-
我认为,在这种情况下,您应该将您的服务视为 MVVM 架构中的模型,并且 ViewModel 应该与服务交互(反之亦然)以检索数据并将其提供给 View(Activity 或片段)使用像 LiveData 这样的架构机制。服务可能对 ViewModel 一无所知。
-
@Nikolay viewmodel 如何引用服务?如果我错了,请纠正我,但这不是反模式,因为服务是 Android 框架的一部分。 Viewmodel 永远不应该直接与它们通信。这就是为什么有 LiveData。 Plus Services 和 ViewModel 的生命周期不同。它最终可能会泄漏其中一个吗?我错了吗?
-
@Archie,是的,你是对的。 ViewModel 不应直接与 Service 或其他 Adnroid 组件交互。当我写这篇文章时,我并没有完全理解 SOLID 原则。在 Lyla 的帖子中,完美的 MVVM 架构图。
标签: android mvvm android-architecture-components android-viewmodel