Java 检查领域对象是否有任何更改
如果结果中的realmObject的值已更改,是否有方法检测该值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
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*()