Java / Android领域-保留查询/结果状态

时间:2018-08-18 14:09:30

标签: java android database kotlin realm

在当前正在开发的项目中,我们正在将Realm Database集成到客户的应用程序中,以提高响应能力,同时处理约20.000条记录的巨大数据集。对于屏幕演示,我们合并了Realm's Android Recyclerview。用例的大多数是读取操作,随后可能进行高级搜索和/或过滤记录。

在我们看来,如果在某些情况下会出现问题,那么从给定类型的所有数据中,仅应显示一部分记录,并由后端选择。使用API​​传递的信息,我们执行初始过滤并设置视图。

现在,使用前面提到的技术,存在一种可读且可维护的方式来存储此预先过滤的子集或将其提取来进行查询的查询,以供进一步参考,以便一旦searchview和/或清除过滤器?还是应该存储API响应以重新应用通过它给出的条件是唯一的方法?将任何新条件应用于查询似乎可以永久改变它,将新查询应用于结果也是如此。难道没有一种方法可以在不影响旧数据集的基础上创建一个新的结果集吗?

编辑:我们的应用程序是“双语的”,无论基于Java还是基于Kotlin的解决方案都受到欢迎。

1 个答案:

答案 0 :(得分:2)

本周早些时候我们意识到,就像@EpicPandaForce在评论中提到的那样,而 RealmQuery 对象不能通过将其分配给备用变量来“快照”扩展它,对于 RealmResults 对象来说并非如此。如此:

RealmResults<Obj> widerResults = realmInstance.where(Obj.class).in("id", idArray).findAll;
RealmResults<Obj> narrowerResults = widerResults.where().equalTo("flag", true).findAll;

将提供两个独立的结果集。可以按照我强调的用例使用更广泛的一个-将其视为进一步子查询的起点。在集合本身中发现的对象更改仍将反映在两个集合中。

为所有迷失的灵魂提供答案,以防他们像我们一样陷入困境。