java - Realm 未获取数据

标签 java android realm

我在使用 Realm 时遇到问题。

findAll 和 findAllAsync 不会从 Realm 返回任何数据。

我正在像这样从主线程更新 Realm 对象。

public void updatePhoto(final int ticketID) {
    realm.beginTransaction();
    RealmResults ticketPhotos =  realm.where(TicketPhoto.class).equalTo("TicketID", ticketID).findAll();`           
    for (TicketPhoto ticketPhoto : ticketPhotos) { 
        ticketPhoto.IsModified = true;
    }
    realm.commitTransaction(); 
} '$'

同时,一个后台服务每五分钟运行一次,并不断检查 IsModified 标志为 true 的任何对象。从我的后台服务(IntentService)中,我使用 AsyncTask 并在 doInBackground 中,尝试获取这些 IsModified 记录,我认为 Realm 应该选择这些记录并使用我的服务器进行更新。使用以下代码从 Realm 获取数据。

public RealmResults getTicketPhotosToSave (){
    return realm.where(TicketPhoto.class)
           .equalTo("IsModified", true)
           .findAll(); 
}

当我仍在同一个照片 Activity 中,将照片保存到 IsModified 标志为 true 的 Realm 时,后台服务中的 Realm 不会选择这些记录。但是,当我销毁该应用程序并再次运行它时,服务现在正在选择这些记录。我不确定我在这里是否做错了什么。

最佳答案

它正在工作。感谢您的支持

现在我明白了,除非我们在同一线程上更新数据,否则不需要关闭 Realm 。 当我们需要访问不同线程中的这些更改时,我们始终需要关闭 Realm 。 由于后台线程始终需要访问所有对象,因此我们必须在访问数据之前关闭并打开 Realm 。

因此,在访问/查询数据之前,我按照 @Zhuinden 建议刷新 Realm ( realm not fetching data ) 然后是realm.Close()。之后我创建实例 (realm = Realm.getDefaultInstance(); )

关于java - Realm 未获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39600315/

相关文章:

java.lang.ClassNotFoundException : org. aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException 异常

java - Java 中的 python struct.unpack

java - 获取 applicationContext.xml 文件中配置的所有数据源?

android - 如何使用 repo 下载 eclair 源

iOS11 - Realm 框架未构建

android - 将 protobuff 类转换为模型并使用 Realm 存储其值

java - Java Hangman 程序中 JOptionPane/JPanel 的奇怪问题

android - 如何使 Asynctask postExecute 将变量发送回主类

java - 在for循环之外打印数组java

android - Realm 获得匹配查询的某些属性而不是所有属性?