Ich verwende Realm als Datenbank für meine App.Wissen, welche Tabelle im globalen Realm geändert wurdeChangeListener
Ich habe einige Tabellen in meiner Datenbank say- Table1, Table2, Table3, Table4 und Table5.
Ich habe die gleiche Anzahl von Aktivitäten wie Tabellen, von denen jede die Daten aus einer der Tabellen anzeigt.
Für z.
Activity1 würde Daten von Tabelle 1 zeigt
Activity2 Daten aus Tabelle 2
anzeigen würde Aktivität3 würde Daten aus Tabelle 3 angezeigt werden und so weiter
jeweilige Aktivität, sobald einige Daten in seiner entsprechenden Tabellenänderung zu aktualisieren Ich habe einen RealmChangeListener mit meiner Realm-Instanz registriert. Ich instanziiere Realm in einer zentralen Klasse. Ich möchte RealmChangeListener nicht in allen einzelnen Klassen registrieren, da eine einmalige Registrierung mit der zentralen Realm-Instanz wartungsfreundlicher wäre.
Allerdings, in der OnChange-Rückruf des RealmChangeListener, bekomme ich das Realm-Objekt zurück und es gibt keine Möglichkeit für mich zu wissen, dass Daten in welcher Tabelle tatsächlich geändert.
Ich füge den Code, wie ich Realm instanziieren und den ChangeListener unten registrieren.
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?
}
});
}
}
Mein Ziel ist es, eine Sendung über LocalBroadcastManager mit Informationen zukommen zu lassen in Bezug auf die Tabelle von onChange Rückruf geändert. Alle Aktivitäten würden auf diese Übertragung warten, und wenn sich die Daten in der Tabelle, die der Listening-Aktivität zugeordnet ist, geändert haben, würde sie sich selbst aktualisieren. Die restlichen Aktivitäten würden die Übertragung einfach ignorieren. Mein Ziel ist es, Datenbankänderungen nur von einem Ort in meiner App aus zu überwachen und nur einen Broadcast für eine Datenbankänderung zu senden. Die Geschäftslogik für die Datenbankänderung hängt von den in der Übertragung enthaltenen Informationen ab.
Meine Frage wäre, ist es möglich, benachrichtigt zu werden, welche Tabelle in der RealmChangeListener geändert wurde, die mit dem globalen Bereich registriert wurde? Wenn nicht, gibt es dann Alternativen, um das zu erreichen, was ich tun möchte?
mit denen ich arbeite:
Realm - 1.0.1
Android Studio - 2.1.2
Min SDK - 19
Ziel SDK - 23
Ich teste meine App auf Android 5.1.1
Vielen Dank für die Hilfe im Voraus.
Vielen Dank @Christian Melchior für Ihre schnelle Antwort! Ich denke, ich werde versuchen, einen Change-Listener für die Realm-Ergebnisse in jeder Aktivität zu registrieren. Der zweite Ansatz erscheint jedoch auch interessant. Danke nochmal für die Hilfe. – rbing