Realm: Verwenden Sie einen oder mehrere Bereiche in einer App (und ein oder mehrere Schemas)

Ich implementiere eine App, die Daten an bestimmten Punkten (die nicht miteinander zusammenhängen) mit Realm speichert. Zum Beispiel

Speichern Sie die vom Benutzer bevorzugten Elemente. (Die App hat einen Chat) Speichern Sie die Chat-Konversationen und aktuellen KonstantenImplementiere einen persistenten Cache für einige Anfragen der AppLetzte Suchanfragen / Formular speichern, um die automatische Vervollständigung zu ermöglichen

(Lässt jeden dieser Punkte als Modul / Paket benennen)

Jedes Modul / Paket hat einigeRealmObjects, um fortzufahren. Wie soll ich das organisieren? Unter dem Gesichtspunkt der Code-Sauberkeit, Leistung oder was auch immer ich interessieren sollte

Option A: Verwenden Sie einen eindeutigen (Standard-) Bereich mit einem eindeutigen Schema:

VerwendenRealm.getInstance(context)

Zugang zum richtigenRealmObjects in jedem Modul / Paket

Option B: Verwenden Sie mehrere Bereiche mit dem Standardschema

Geben Sie einen anderen Namen in das Feld @ eiRealmConfiguration für den in jedem Modul verwendeten Realm (unter Verwendung des Standardschemas).

Da die Daten zu verschiedenen Teilen der App gehören, die isoliert und nicht miteinander verbunden sind, verwenden Sie für jedes Modul einen anderen Bereichsnamen.

Option C: Verwenden Sie mehrere Bereiche und legen Sie den Gültigkeitsbereich der Modellklassen fest, die mit einem Schema pro Anwendungspaket verwendet werden. Geben Sie für jedes isolierte Paket einen Namen und ein Schema an. Zum Beispiel

public static Realm getChat(Context context){
    RealmConfiguration config = new RealmConfiguration.Builder(context)
            .name("chat.realm")
            .schemaVersion(1)
            .setModules(new ChatRealmModule())
            .build();
    return Realm.getInstance(config);
}

// Create the module
@RealmModule(classes = { ChatRoom.class, ChatMessage.class, ChatUser.class})
public static class ChatRealmModule{
}

Option D: Andere?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage