清理旧的Realm对象?

时间:2017-06-08 18:28:20

标签: java android realm

是否有一种从Realm数据库中删除旧数据的简单方法?就像某个对象有一天存储自动删除它?

替代方法可以是添加带有日期的字段并提取并比较它以决定是否删除,但问题是,如果Realm本身有一个方法来实现此目的

  

我已经看到了一些类似的问题(like this one),但没有Android   (或Java)Realm docs我发现的唯一类似方法   关于migrations.

     

问题是是否有其他方法可以自动删除   来自Realm的旧对象,例如我们存储数据时的条件,a   参数,配置或Realm方法,而不仅仅是比较   每一次。 很明显,通过查询,我们可以消除任何对象   我们想要的。

     

链接问题的说明(不是答案),只是为了澄清这不是基于Swift的问题,并且乍一看并没有将其标记为重复。

4 个答案:

答案 0 :(得分:9)

添加包含日期的字段,并根据

查询要删除的字段

然后你可以做

 realm.where(MyClass.class)
    .lowerThan("date", someDate)
    .findAll()
    .deleteAllFromRealm()

修改

  

问题是是否有任何其他方法可以自动从Realm中删除旧对象,例如存储数据,参数,配置或Realm方法时的条件,而不仅仅是每次比较。

没有

  

很明显,通过查询,我们可以删除任何我们想要的对象。

链接的基于Swift的答案完全相同。

答案 1 :(得分:5)

不,Realm本身没有这样的功能。

您的替代方案很好但我不建议使用后台服务来删除数据,因此在查询时检查/删除数据。

答案 2 :(得分:3)

Yupp你可以像这样删除旧的领域数据,

realmConfiguration = new RealmConfiguration.Builder().build();
Realm.deleteRealm(realmConfiguration);
realm = Realm.getInstance(realmConfiguration);

在上面的行中,第二行是

Realm.deleteRealm(realmConfiguration);

执行删除旧领域数据。或者您可以删除特定类的数据,

realm.where(YourClass.class)
    .lowerThan("date", currentDate)
    .findAll()
    .deleteAllFromRealm()

答案 3 :(得分:3)

将警报管理器设置为每天(间隔24小时) 在报警管理器回调时,只需使用下面的代码删除旧数据

realm.where(BeanClass.class)
    .lowerThan("date", currentDate)
    .findAll()
    .deleteAllFromRealm();