AsyncTask.execute(new Runnable() {
@Override public void run() {
if (isbackendLoad){
// Backend load I must use syn retrofit because some reason.
// saveResulttoRealm
} else {
final Realm realm = Realm.getDefaultInstance();
RealmResults<RealmAnimal> realmAnimals =
realm.where(RealmAnimal.class).equalTo("DogId",DogId, Case.INSENSITIVE).findAll();
}
}
});
在动物中我有DogId字段。我检查领域浏览器,它有动物与DogId但结果是空的。没有AsyncTask.exe的这个领域查询工作正常。原因是AsyncTask.execute?但我必须使用for Syn Retorfit,没有它改装返回null。 一些线程Ex:Async#1返回null,Aysnc other有结果!= null。
答案 0 :(得分:1)
你应该在正确的时间得到结果。完全在AsyncTask完成之后。在此过程之前将返回null。检查finally {
中的返回值,它会告诉您问题发生在哪里。
答案 1 :(得分:0)
试试这个
realm.where(RealmAnimal.class)
.equalTo("DogId", DogId, Case.INSENSITIVE)
.or()
.contains("DogId", DogId, Case.INSENSITIVE)
.findAll();
否则你可能会遇到问题&#34; DogId&#34;因为那是列名,并且必须与数据库表中定义的相同
答案 2 :(得分:0)
我通过创建一个线程进行保存并从域中获取来解决这些问题。
AsyncTask.execute(new Runnable() {
@Override public void run() {
if (isbackendLoad){
// Backend load I must use syn retrofit because some reason.
//handler.post(() -> saveResulttoRealm;
} else {
handler.post(new Runnable(){
@Override public void run() {
final Realm realm = Realm.getDefaultInstance();
RealmResults<RealmAnimal> realmAnimals =
realm.where(RealmAnimal.class).equalTo("DogId",DogId, Case.INSENSITIVE).findAll();
}
});
}
});