Wie wird die Android Room-Datenbanktabelle beim ersten Start gefüllt?

8

In SQLiteOpenHelper gibt es eine onCreate(SQLiteDatabase ...) -Methode, die ich benutzt habe, um Datenbanktabellen mit einigen Anfangsdaten zu füllen.

  

Gibt es eine Möglichkeit, zuerst einige Daten in die Raumdatenbanktabelle einzufügen?   App ausführen?

    
user2538289 22.06.2017, 10:58
quelle

2 Antworten

21

Sie können Skripts ausführen, nachdem die Datenbank erstellt oder jedes Mal ausgeführt wird, wenn die Datenbank mit RoomDatabase.Callback geöffnet wird. Diese Klasse ist in der neuesten Version der Raumbibliothek verfügbar.

Sie müssen die Methode onCreate und onOpen von RoomDatabase.Callback implementieren und sie zu RoomDatabase.Builder hinzufügen, wie unten gezeigt.

%Vor%

Referenz: Ссылка

    
Arnav Rao 20.07.2017 06:35
quelle
5

Ich habe eine Reihe von Möglichkeiten ausprobiert, die jeweils nicht verfügbar sind.

Zuerst habe ich versucht, eine Migrationsimplementierung mit der Methode 'addMigrations' zu Room hinzuzufügen, habe aber festgestellt, dass sie nur während eines Datenbankupgrades ausgeführt wird, aber nicht bei der Erstellung.

Ich habe dann versucht, eine SQLiteOpenHelper-Implementierung mit der Methode 'openHelperFactory' an Room zu übergeben. Aber nachdem ich eine Reihe von Klassen erstellt hatte, um die Zugriffsmodifizierer von Room zu umgehen, gab ich den Aufwand auf. Ich habe auch versucht, die FrameworkSQLiteOpenHelperFactory von Room zu subklassen, aber der Access-Modifikator auf Paket-Ebene seines Konstruktors hat dies nicht unterstützt.

Schließlich habe ich einen IntentService erstellt, um die Daten zu füllen und sie von der onCreate-Methode meiner Application-Unterklasse aufzurufen. Der Ansatz funktioniert, aber eine bessere Lösung sollte die bevorstehende Behebung des von Sinigami an anderer Stelle auf dieser Seite erwähnten Tracker-Problems sein.

Darryl

[Hinzugefügt am 19. Juli 2017]

Das Problem scheint in Room 1.0.0 gelöst zu sein. Alpha 5. In dieser Version wurde ein Rückruf zu RoomDatabase hinzugefügt, mit dem Sie Code beim ersten Erstellen der Datenbank ausführen können. Schau dir an:

Ссылка

    
Darryl Staflund 09.07.2017 23:05
quelle

Tags und Links