die RealmChangeListener
nicht so funktioniert, wie ich erwartet hatte, hier ist das, was ich damit tun:Realm RealmChangeListener ein Verhalten hat verstehe ich nicht
public ArrayList<NotificationMessage> getNotifications(RealmChangeListener<RealmResults<NotificationMessage>> listener) {
RealmResults<NotificationMessage> results = realm.where(NotificationMessage.class).findAll();
results.addChangeListener(listener);
return (ArrayList) realm.copyFromRealm(results);
}
public void addNotification(NotificationMessage notif) {
realm.beginTransaction();
realm.copyToRealm(notif);
realm.commitTransaction();
}
Basicly I Realm bin mit gcm Nachrichten zu speichern. Meine GCMListenerService
Anrufe addNotification()
wenn er erhält, und ich habe ein Fragment, das Benachrichtigungen zeigt Thesen, die getNotifications(this)
aufrufen, wenn es erstellt wird. Es implementiert RealmChangeListener<RealmResults<NotificationMessage>>
:
@Override
public void onChange(RealmResults<NotificationMessage> element) {
RecyclerAdapter.refreshDataSet(Realm.getDefaultInstance().copyFromRealm(element));
}
Mein Problem ist, dass die meiste Zeit onChange()
wird nicht aufgerufen. Manchmal ist es, manchmal mehrmals hintereinander, und dann wird es nicht erneut aufgerufen (ohne etwas anderes zu tun, als meine Webseite zu aktualisieren, die die Nachricht an GCM sendet). Die Benachrichtigungen werden gut in der Datenbank gespeichert, wenn ich wieder getNotifications
rufe, sehe ich sie alle.
Ich begann heute Morgen mit Reich würde ich so apprieciate, wenn Sie Vorschläge haben, wie ich meine „Realm“ Code zu organisieren.
public static <T extends RealmObject> ArrayList<T> convertRealmToPlainObject(RealmResults<T> results) {
ArrayList<T> returnedData = new ArrayList<>();
Iterator<T> it = results.iterator();
while (it.hasNext()) {
returnedData.add(it.next());
}
return returnedData;
}
Was ist convertRealmToPlainObject? –
Es ist nur ein einfaches util: Ich habe es hinzugefügt –
@TimCastelijns worüber hast du nachgedacht? –