query = query.endGroup();
}
query = query.and().notEqualTo("_id", userModel._id);
RealmResults<User> userModels = query.findAllAsync();
userModels.addChangeListener(new RealmChangeListener<RealmResults<User>>() {
@Override
public void onChange(RealmResults<User> users) {
if(userModels.isLoaded()) {
Vector<User> vector = new Vector();
RealmResults<User> results = userModels.sort("firstname", Sort.ASCENDING, "lastname", Sort.ASCENDING);
for (int i = 0; i < results.size(); i++) {
vector.add(results.get(i));
} // for
User[] result = new User[vector.size()];
vector.copyInto(result);
completionUsers.onSuccess(result);
userModels.removeAllChangeListeners();
} // if
}
});
}
catch (Exception e) {
e.printStackTrace();
completionUsers.onFail(e.getMessage());
}
}
and im call this as
RealmHelper.shared.searchUsers(GlobalService.shared.getMe(), !isSimple ? “” : simpleText, new RealmHelper.CompletionUsers() { @Override
public void onSuccess(HPUser[] userRealm) {
This code here RealmResults<User> userModels = query.findAllAsync(); might be problematic as the RealmResult risk getting GC’ed before the callback triggers. You should move that to a class to ensure that doesn’t happen.
I suspect that is what you are seeing, as that would cause the changelistener to never trigger. Otherwise it looks correct