小编ste*_*asy的帖子

如何从服务中的Room数据库读取数据和侦听更改?

我正在将用户信息存储在本地会议室数据库中。在活动和片段中,我使用AndroidViewModel和LiveData侦听对数据库所做的更改并更新UI。

现在,我想分析所有过去的用户数据,以便为将来的决策提供建议。我的建议会针对用户对数据库所做的每一次更改而更改,因此我需要经常更新自己的建议,同时一遍又一遍地执行相同的计算。

我当时正在考虑在应用程序启动时启动一项服务,该服务通过ViewModel和LiveData侦听数据库更改并更新我的建议(这些建议也存储在同一数据库中)。但是某种方式服务不能

  1. 通过获取ViewModel viewModel = ViewModelProviders.of(this).get(DataViewModel.class);
  2. 观察LiveData对象,因为它不是LifecycleOwner。

基本上,每次数据库内容更改时,我只需要从数据库中读取所有条目,分析数据并更新5-10个值即可。

如果不在服务中,我应该如何以及在哪里进行计算?也许我陷入了一个错误的想法,而服务却不是正确的方法,因此非常感谢您提供有关如何执行此操作的任何想法!

java android android-service android-room android-viewmodel

6
推荐指数
2
解决办法
3498
查看次数