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());

现在您在服务中有了可以访问数据库的存储库。