在Android上使用Room和Java维护表中的计数字段-寻找建议

问题描述

由于某些回调和后台线程要求,我正在Android上使用Room并使用Java进行编程,并且由于某些回调和后台线程要求,我发现自己跳到篮球圈中维护表中的count字段,我希望有人可能有一个简单的解决方案。 / p>

我正在做一个插入表的记录。对于每个ScenarioRun,我需要维护一个计数。因此,它不是仅针对给定ScenarioRun的整个表中的记录计数。

我相信插入RunLog条目时最好的方法是在ViewModel中。理想情况下,我将使用RunId从Log表中计算计数,因此我的Dao中将包含以下查询:

@Query("SELECT COUNT(*) from ScenaroRunLog WHERE scenarioRunId=:scenarioRunId")
int getScenarioRunLogCount(int scenarioRunId);

我将通过存储库传递到ViewModel,因此在插入时,我将其递增:

public void insert(ScenarioRunLog scenarioRunLog) {

    // code to set the count in the object something like:
    // int count = scenarioRunLogRepository.getScenarioRunLogCount(scenarioRunLog.getScenarioRunId);
    // scenarioRunLog.setCount(count);


    scenarioRunLogRepository.insert(scenarioRunLogId,scenarioRunLog);
}

我可以在存储库中执行此操作,但是唯一可以查看如何执行此操作的方法是使用allowMainThreadQueries(),这似乎不是最佳实践,也不是使用执行程序。基本上是建议here

在这种情况下,有没有更好的方法?我还发现简单的事情具有挑战性。

我还可以简单地在ViewModel中加载ScenarioRun并在那时重置计数,从那时起将其维护在ViewModel中,但是我还要加载ScenarioRun。我想我可以使用另一个AsyncTask进行选择,就像他们here一样。

RecyclerViews和其他UI组件的LiveData很棒,但是简单的查询似乎具有挑战性。即使在插入时返回RowId也需要大量的工作。在这里寻找一些指导。我先感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...