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

Java 检查领域对象是否有任何更改,java,android,realm,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? } 我想这就是你要找的 RealmChangeListe

如果结果中的realmObject的值已更改,是否有方法检测该值

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

account.setName("New Name");

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

}

我想这就是你要找的

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();
}
RealmChangeListener侦听器=新的RealmChangeListener(){
@凌驾
更改后的公共作废(帐户){
//已对帐户表进行了更改
}
}
账户mAccount;
mAccount=mRealmInstance.where(Account.class).equalTo(“isLoggedIn”,true).findFirst();
如果(mAccount!=null){
mAccount.addChangeListener(监听器);
//假设我在这里交易
mAccount.setName(“新名称”);
}
...
if(mAccount.isValid()){
mAccount.removeAllChangeListeners();
}
尽管我确实认为,
RealmChangeListener
会在
Account
表发生更改时激活,而不仅仅是在修改此特定对象时激活


(编辑:由于领域3.1+领域对象侦听器也是细粒度的,因此仅当所选帐户被修改时才会对其进行修改)

您可以将侦听器添加到
RealmObject
,但它将在数据库更改时被调用,而不仅仅是
RealmObject
更改时被调用。稍后会有更合适的实现,请参阅不确定激活。似乎只有在您修改Account表中所选帐户时才调用onChange方法。@Tobliug因为Realm 3.1+领域对象侦听器也是细粒度的,所以只有在修改所选帐户时才对其进行修改。是否有办法检查整个表是否被修改?将RealmChangeListener添加到
realm.where(MyObject.class).findAll*()