Android MVVM架构的应用程序,使用MVVM从Service写入本地Room数据库,Service应该如何写入数据库?
Android application with MVVM architecture, writing to local Room database from a Service using MVVM, how should the Service write to the database?
在 MVVM 中,我们有 Activity 和 Fragments。 Fragments 和 Activity 可以访问 ViewModel。 ViewModles 可以访问存储库。
存储库可以访问本地和在线数据库。
我想构建一个服务组件,以便当应用程序置于后台时,该服务应继续写入本地数据库。
这是我的应用程序的样子:
https://source.coderefinery.org/Karagoez/mytourassistent
我找不到关于服务如何在 MVVM 架构中实现的可靠信息。
服务是否应该获取调用它的 Activity 的视图模型并从中调用存储库?
是否应该在存储库中定义服务?
Service组件在写数据库的时候在MVVM架构中应该如何实现?
那里问了一个类似的问题:What is the right place to start a service in MVVM architecture Android
但它得到了两个截然不同的答案。
您可以使用 LifecycleService
并像在 Activity 或 Fragment:
中一样使用它
// helpers for implementing LifecycleOwner in a Service
implementation "androidx.lifecycle:lifecycle-service:2.3.1"
我找到了我自己问题的答案:
像这样在存储库中创建一个静态方法:
public static Repository getInstance(Context applicationContext) {
if (repository == null) {
repository = new Repository(applicationContext);
}
return repository;
}
然后在 Service class 中使用此方法,如下所示:
repository = Repository.getInstance(getApplication());
现在您在服务中有了可以访问数据库的存储库。
在 MVVM 中,我们有 Activity 和 Fragments。 Fragments 和 Activity 可以访问 ViewModel。 ViewModles 可以访问存储库。 存储库可以访问本地和在线数据库。
我想构建一个服务组件,以便当应用程序置于后台时,该服务应继续写入本地数据库。
这是我的应用程序的样子:
https://source.coderefinery.org/Karagoez/mytourassistent
我找不到关于服务如何在 MVVM 架构中实现的可靠信息。
服务是否应该获取调用它的 Activity 的视图模型并从中调用存储库?
是否应该在存储库中定义服务?
Service组件在写数据库的时候在MVVM架构中应该如何实现?
那里问了一个类似的问题:What is the right place to start a service in MVVM architecture Android
但它得到了两个截然不同的答案。
您可以使用 LifecycleService
并像在 Activity 或 Fragment:
// helpers for implementing LifecycleOwner in a Service
implementation "androidx.lifecycle:lifecycle-service:2.3.1"
我找到了我自己问题的答案:
像这样在存储库中创建一个静态方法:
public static Repository getInstance(Context applicationContext) {
if (repository == null) {
repository = new Repository(applicationContext);
}
return repository;
}
然后在 Service class 中使用此方法,如下所示:
repository = Repository.getInstance(getApplication());
现在您在服务中有了可以访问数据库的存储库。