检查领域对象是否有任何更改

Kim*_*ano 4 java android realm

如果结果中的 realmObject 值发生了变化,有没有办法检测它?

Account account = mRealmInstance.where(Account.class).equalTo("isLoggedIn", true).findFirst();

account.setName("New Name");

if(account.hasChanged()){ //Is there a realmMethod for this?

}
Run Code Online (Sandbox Code Playgroud)

Epi*_*rce 5

我想这就是你要找的?

RealmChangeListener<Account> listener = new RealmChangeListener() {
    @Override
    public void onChange(Account account) {
        // changes have been made to Account table
    }
}

Account mAccount;

mAccount = mRealmInstance.where(Account.class).equalTo("isLoggedIn", true).findFirst();
if(mAccount != null) {
    mAccount.addChangeListener(listener);
    //assuming I'm in a transaction here
    mAccount.setName("New Name");
}

...

if(mAccount.isValid()) {
    mAccount.removeAllChangeListeners();
}
Run Code Online (Sandbox Code Playgroud)

虽然我确实认为RealmChangeListener只要Account表格发生变化就会激活,而不仅仅是在修改这个特定对象时。

(编辑:从 Realm 3.1+ 开始,领域对象侦听器也是细粒度的,因此只有在修改所选帐户时才会对其进行修改)