我正在测试Realm的数据库存储。
我正在使用单例来获取和管理需要经常刷新的常见数据。但似乎在我的单例中获取的Realm defaultInstance与我在Activity中获取它的范围不同。因此,当我通过我的单例获取远程数据,然后保存到领域时,我无法从Activity中检索该数据(获取空结果集)。
我试图将我在Activity中定义的Realm实例传递给单例(并在那里关闭它),但我仍然无法通过Activity实例检索保存的结果。
我在我的Application类中设置默认配置,如果这有所不同。
任何帮助都将在清除它时受到赞赏。
**修改
这是一些更多的代码。我正在使用retrofit和gson,而我的相关服务是在Utility类中(可能导致问题)。
private void fetchMyObjects(Context context) {
// Fetch the myObjects
UtilityServices utilityServices = new UtilityServices(context);
utilityServices.getMyObjects(new UtilityServices.MyObjectsListener() {
@Override
public void gotMyObjects(final ArrayList<MyObject> myObjects, Exception e) {
if(e == null) {
Realm realm = null;
try {
realm = Realm.getDefaultInstance();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.delete(MyObject.class);
realm.copyToRealm(myObjects);
Log.v("qwer", "LocalDataFragment fetchMyObjects: " + realm.where(MyObject.class).findAll().size());
}
});
} finally {
if(realm != null) {
realm.close();
}
}
} else {
// TODO: Handle a myObject error.
e.printStackTrace();
}
}
});
}
答案 0 :(得分:1)
只有一种方法是在执行事务后,Realm事务的结果不可见,并且事务发生在不同的线程上。
在您的代码中似乎很可能就是这种情况,因为如果在{i}}线程上运行getMyObjects
,您将获得UI线程异常的#34;无网络活动&#34 ;