我使用Realm作爲我的應用的數據庫。瞭解哪個表在全局領域發生了變化ChangeListener
我在我的數據庫中有幾個表 - 表1,表2,表3,表4和表5。
我有與表相同數量的活動,其中每個顯示其中一個表中的數據。
例如,
活性1將從表1顯示數據
活性2會從表2從表3中顯示數據
Activity3將顯示數據等
要儘快更新各自的活動如在其相應的表中的更改一些數據,我用我的領域實例註冊了一個RealmChangeListener。我在中心類中實例化了Realm。我不想在所有單獨的類中註冊RealmChangeListener,因爲註冊一次後,中央領域實例將更易於維護。
但是,在RealmChangeListener的onChange回調函數中,我得到了Realm對象,並且沒有辦法讓我知道哪些表中的數據實際發生了更改。
我正在添加如何實例化realm的代碼,並在下面註冊changeListener。
MyApplication.java
public class MyApplication extends Application{
@Override
public void onCreate() {
super.onCreate();
MainClass mainClass = new MainClass(getApplicationContext());
}
}
MainClass.java
public class MainClass{
public MainClass(Context context){
RealmConfiguration config = new RealmConfiguration.Builder(context).build();
Realm realm = Realm.getInstance(config);
realm.addChangeListener(new RealmChangeListener<Realm>() {
@Override
public void onChange(Realm element) {
//is it possible to know here that data for which table changed?
}
});
}
}
我的目標是通過LocalBroadcastManager發送廣播與信息有關該表的onChange從回調改變。所有的活動都會監聽這個廣播,如果表中與聽力活動相關的數據發生了變化,那麼它會自行更新。其餘的活動只會忽略廣播。我的目標是僅在應用程序中的一個位置監視數據庫更改,並只發送一個廣播以進行數據庫更改。處理數據庫更改的業務邏輯將取決於廣播中包含的信息。
我的問題是,是否有可能得到有關在RealmChangeListener中註冊的全局領域中修改了哪些表的通知?如果沒有,那麼是否有其他辦法可以實現我想要做的事情?
我一起工作:
境界 - 1.0.1
Android的工作室 - 2.1.2
民SDK - 19
目標SDK - 23
我測試我的應用程序在Android 5.1.1
感謝您提前提供的所有幫助。
非常感謝你@Christian Melchior爲您的及時回覆!我想我會嘗試在每個活動的領域結果上註冊一個更改監聽器。然而,第二種方法似乎也很有趣。再次感謝您的幫助。 – rbing