2017-06-10 1 views
1

Gemäß the docs kann Realm Sie benachrichtigen, wenn bestimmte Aktionen wie "jedes Mal, wenn eine Schreibtransaktion ausgeführt wird" stattfinden. Ich verwende den Realm Object Server und wenn ein Benutzer das erste Mal meine App öffnet, wird eine große Menge von Daten vom Server zur App synchronisiert. Ich möchte einen Ladebildschirm anzeigen und die Hauptbenutzeroberfläche meiner App erst anzeigen, wenn Realm die erste Synchronisierung abgeschlossen hat. Gibt es eine Möglichkeit, benachrichtigt zu werden, wenn dieser Prozess abgeschlossen ist?Realm: Benachrichtigung nach der ersten Synchronisierung

+0

Welche Plattform.? Android Ios reagieren-native Xamarin? – EpicPandaForce

+0

Reagieren Native/JS – AdamG

Antwort

1

Die realm.io Website hat gerade documentation auf, wie dies zu tun ist.

Asynchron Öffnungs Realms

Wenn eine Realm öffnen könnte ein zeitraubender Vorgang, wie das Anwenden von Migrationen oder Herunterladen der entfernten Inhalte eines synchronisierten Realm benötigen, sollten Sie die openAsync API verwenden, um alle Arbeiten auszuführen benötigt um das Realm in einem Hintergrund-Thread in einen verwendbaren Zustand zu bringen, bevor es in die angegebene Warteschlange geschickt wird. Sie sollten auch openAsync mit Realms verwenden, die schreibgeschützt sind.

Zum Beispiel:

Realm.openAsync({ 
    schema: [PersonSchema], 
    schemaVersion: 42, 
    migration: function(oldRealm, newRealm) { 
    // perform migration (see "Migrations" in docs) 
    } 
}, (error, realm) => { 
    if (error) { 
    return; 
    } 
    // do things with the realm object returned by openAsync to the callback 
    console.log(realm); 
}) 

Der openAsync Befehl ein Konfigurationsobjekt als ersten Parameter und einen Rückruf als zweites nimmt; Die Callback-Funktion empfängt ein Boolesches Fehler-Flag und das geöffnete Realm.

Initial Downloads

In einigen Fällen könnten Sie nicht ein Realm öffnen möchten, bis es alle Remote-Daten zur Verfügung hat. Verwenden Sie in diesem Fall openAsync. Bei Verwendung mit einem synchronisierten Realm werden alle Inhalte des Realms heruntergeladen, bevor der Rückruf aufgerufen wird.

var carRealm; 
Realm.openAsync({ 
    schema: [CarSchema], 
    sync: { 
    user: user, 
    url: 'realm://object-server-url:9080/~/cars' 
    } 
}, (error, realm) => { 
    if (error) { 
    return; 
    } 
    // Realm is now downloaded and ready for use 
    carRealm = realm; 
}); 
Verwandte Themen