2016-07-20 73 views
3

如果結果中的realmObject值已更改,是否有方法檢測它?檢查領域對象是否有任何更改

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

account.setName("New Name"); 

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

} 
+1

您可以添加監聽到'RealmObject',但它會被稱爲當數據庫發生變化時,但不僅是「RealmObject」更改。稍後會有更適當的實現,請參閱https://github.com/realm/realm-java/issues/989 – beeender

回答

3

我認爲這是你在找什麼?

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(); 
} 

雖然我覺得只要有一個變化的Account表,不只是當這個特定的對象被修改的RealmChangeListener被激活。

(編輯:自境界3.1+領域對象的聽衆也細粒度所以只有當所選帳戶進行修改它被修改)

+0

不確定激活。看起來只有在修改Account表中選定的賬戶時才調用onChange方法。 – Tobliug

+1

@Tobliug自Realm 3.1+以來,領域對象監聽器也是細化的,因此只有在選定的帳戶被修改時纔會被修改 – EpicPandaForce