问题描述
由于某些回调和后台线程要求,我正在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 (将#修改为@)