在我的应用程序中,我通过后台线程中的领域事务同步我的所有数据。但是,偶尔当我尝试在UI线程中检索最近同步的对象时,我会得到一个空指针异常。我编写了一个例程,似乎是解决这个小延迟问题,但感觉就像一个“hacky”解决方案。任何指导将不胜感激。我已经发布了以下例程的简化版本。
private void attemptToEnterActivity(){
// Retrieve the object's key.
String key = Application.getInstance().getRecentlySyncedPrimaryKey();
// Retrieve the realm object with the key.
Realm realm = Realm.getDefaultInstance();
Object object = realm.where(Object.class)
.equalTo("key", key)
.findFirst();
if (object != null) {
new NavigationController(this).activity_start(new Intent(this, Activity.class));
} else {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
attemptToEnterActivity();
}
}, 200);
}
}
答案 0 :(得分:0)
建议使用RealmChangeListener
,而不是猜测何时会提取和存储对象。有关详细信息,请参阅文档here。
在您的情况下,您还可以使用Realm的异步查询,如:
RealmResults<Object> results = realm.where(Object.class)
.equalTo("key", key).findAllAsync();
results.addChnageListener(newRealmChangeListener<RealmResults<Object>>() {
@Override
public void onChange(RealmResults<Object> objects) {
if (objects.size() > 0) {
Object object = objects.first();
// ....
}
}
});